从数组中获取最高数字

时间:2015-09-02 13:23:32

标签: php arrays sorting

我有以下数组:

Array ( [0] => 80 ) Array ( [0] => 20 ) Array ( [0] => 90 )

代码:

    $percentage_query        = $this->Common_model->getTableData('prop_payment_percentage', array('list_id' => $id));

    $percentage_result = $percentage_query->result_array();

        foreach ($percentage_result as $ptime) {

            $percentage_start_date = $percentage_query->row()->start_date;
            $percentage_end_date = $percentage_query->row()->end_date;
            $percentage_percentage = $percentage_query->row()->percentage;

            //Days between start date and end date -> seasonal price
            $start_time = $ptime['start_date'];
            $end_time = $ptime['end_date'];
            $hightest_percentage = $ptime['percentage']; // this is the array 802090

            //help me echo 90
        }

我应该如何归还价值90?因为这是我想要返回$变量的最高数字

6 个答案:

答案 0 :(得分:1)

除非对数组进行排序,否则这将是您获得的最佳选择。如果它已排序,只需取第一个和最后一个元素。

当然,如果它没有排序,那么首先排序并抓住第一个和最后一个保证效率低于仅循环一次。即使是最好的排序算法也必须多次查看每个元素(每个元素的平均O(log N)次。这就是O(N * Log N)总数。一次简单的扫描只有O (N)。

如果您想快速访问数据结构中的最大元素,请查看堆,以便有效地保持对象的某种顺序。

sort() - sort arrays in ascending order
rsort() - sort arrays in descending order
asort() - sort associative arrays in ascending order, according to the value
ksort() - sort associative arrays in ascending order, according to the key
arsort() - sort associative arrays in descending order, according to the value
krsort() - sort associative arrays in descending order, according to the key

如果我们使用升序然后访问最后一个元素我们必须计算数组大小并且arr [last_position]给出最高顺序

但是通过按降序排序数组,不需要计算数组大小。只需访问第一个号码,您将获得最高号码

答案 1 :(得分:0)

如果你有一个包含数组的数组,你可以这样做:

df1 <- structure(list(var1 = c(203L, 205L, 206L, 207L, 204L),
var2 = c("UPFRONT BROKERAGE FOR THE MONTH OF MARCH 2008", 
"UPFRONT BROKERAGE FOR THE MONTH OF MAY 2010",
"UPFRONT BROKERAGE FOR THE MONTH OF MARCH 2008", 
"UPFRONT BROKERAGE FOR THE MONTH OF APRIL 2009",
"UPFRONT BROKERAGE FOR THE MONTH OF MARCH 2008"
)), .Names = c("var1", "var2"), class = "data.frame", 
row.names = c(NA, -5L))

答案 2 :(得分:0)

以下是示例如果您有3个数组或变量。

$a1 = Array ( "0" => 80 );
$a2 = Array ( "0" => 20 );
$a3 = Array ( "0" => 90 );

$a4 = array_merge($a1,$a2);

$a5 = array_merge($a4,$a3);
echo '<pre>';
print_r(max($a5));

答案 3 :(得分:0)

您不需要循环。合并三个数组,然后使用max();

    $array = array_merge(array(80),array(20),array(20));
    $max = max($array);

答案 4 :(得分:0)

<?
$a=array(0 => 1300 );
$b=array(0 => 500 );
$c=array(0 => 1220 );

$MaxValue=0;

if($a[0]>$b[0])
{
        $MaxValue=$a[0];
    if($b[0]>$MaxValue)
    {
        $MaxValue=$b[0];
    }
    else
    {
        if($c[0]>$MaxValue)
        {$MaxValue=$c[0];}
    }
}
else
{
    if($b[0]>$c[0])
    {
        $MaxValue=$b[0];
    }
    else
    {
        $MaxValue=$c[0];
    }
}
echo $MaxValue;
?>

答案 5 :(得分:-2)

最简单的方法是使用php中的标准代码函数:

$array = array(0 => 80, 1 => 20, 2 => 90);
$variable = max($array);

另请参阅http://php.net/manual/en/function.max.php

上的文档

更新:此函数不仅仅需要一个整数数组。所有这些都是有效的,并按预期返回3

$a1 = array(1);
$a2 = array(2);
$a3 = array(3);

$i1 = 1;
$i2 = 2;
$i3 = 3;

$arr1 = array($a1, $a2, $a3);
$arr2 = array($i1, $i2, $i3);

echo max($a1, $a2, $a3), "\n";  // 3
echo max($i1, $i2, $i3), "\n";  // 3
echo max($arr1), "\n";  // 3
echo max($arr2), "\n";  // 3

在数组中使用哪些键并不重要。

更新2:如果您确实需要使用值802090,并且可以确保值始终为2位数百分比,则还可以使用{{1函数(然后是str_split函数):

max
相关问题