Php 从数组中获取最大数

Php 从数组中获取最大数,php,arrays,sorting,Php,Arrays,Sorting,我有以下数组: Array ( [0] => 80 ) Array ( [0] => 20 ) Array ( [0] => 90 ) 代码: 我应该如何返回值90?因为它是我想返回到$variable中的最高数字,所以最简单的方法是使用php中的标准代码函数: $array = array(0 => 80, 1 => 20, 2 => 90); $variable = max($array); 另请参见位于的文档 更新:此函数接受的不仅仅是一个整数数组。

我有以下数组:

Array ( [0] => 80 ) Array ( [0] => 20 ) Array ( [0] => 90 )
代码:


我应该如何返回值90?因为它是我想返回到$variable中的最高数字,所以最简单的方法是使用php中的标准代码函数:

$array = array(0 => 80, 1 => 20, 2 => 90);
$variable = max($array);
另请参见位于的文档

更新:此函数接受的不仅仅是一个整数数组。所有这些都有效,并按预期返回
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
开始工作,并且可以确保值始终是两位数的百分比,您也可以使用
stru-split
函数(然后再次使用
max
函数):


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

$masterArray = array(
  array(80),
  array(20),
  array(90),
);
$highestValue = 0;
foreach($masterArray as $arr){
  $highestValue = $arr[0] > $highestValue ? $arr[0] : $highestValue;
}
echo $highestValue; //echo 90;

这里是一个例子,如果你有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));
$a1=数组(“0”=>80);
$a2=阵列(“0”=>20);
$a3=阵列(“0”=>90);
$a4=数组合并($a1,$a2);
$a5=数组合并($a4,$a3);
回声';
印刷品(最高(5美元));

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


除非对数组进行排序,否则将得到最好的结果。如果已排序,则只取第一个和最后一个元素

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

如果您希望快速访问数据结构中最大的元素,请查看堆,以找到一种有效的方法,使对象保持某种顺序

<?
$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;
?>
如果我们使用升序,那么要访问最后一个元素,我们必须计算数组大小,并且arr[last_position]给出最高的顺序

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



如您所见,它们是3个独立的数组,以[0]为键。这些数组是独立变量中的独立数组,还是“超级”数组?这3个数组来自一个分解函数,它仍然无法回答如何存储它们的问题。如果三个数组存储在一个大数组中(数组数组),您可以按照建议使用
max
函数。如果它们是三个独立的变量,您也可以使用
max
函数,但参数更多。1.您有三个独立的数组。2.打开Google->键入“数组php的最高值”我之所以发布这个问题,是因为它们是3个独立的变量,并提供了一些上下文(代码),否则无法帮助您。数组是否存储在一个数组中?是否有3个变量$arr1、$arr2和$arr3?您想做什么?@IlanHasanov:这些变量是如何存储的?是存储在三个单独的变量中,还是存储在另一个数组中?@MichaelKunst我已经添加了获取这些数组的方法。它给我的输出是每个值的第一个字母829。什么我错过了吗?合并甚至不是必需的,
max
接受所有可比较的变量。输出829..每个数字的第一个字母no@IlanHasanov。对我来说效果很好。你的数组是..$array=array(0=>80,1=>20,2=>90);memy数组显示90是三个数组数组数组([0]=>80)数组([0]=>20)数组([0]=>90)只需复制我的代码..并在单独的页面中运行..即可获得结果..@IlanHasanov.工作正常。虽然此解决方案应该可以工作,但使用
echo max($array);
将大大减少代码,甚至可能更快,因为它是本机核心函数…也不太容易出错。。。
$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));
    $array = array_merge(array(80),array(20),array(20));
    $max = max($array);
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
<?
$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;
?>