带有数组的PHP min和max,它可靠吗?

Posted

技术标签:

【中文标题】带有数组的PHP min和max,它可靠吗?【英文标题】:PHP min and max with array, is it reliable? 【发布时间】:2011-06-26 13:22:23 【问题描述】:

这可行,但是可靠吗?它会一直工作吗,因为 MAINarray 包含包含 2 个值的 ANOTHERarray,并且 min 应该在 MAINarray 中工作并在其子数组中找到最低值。

$a[0]=array(0=>522,1=>'Truck');
$a[1]=array(0=>230,1=>'Bear');
$a[2]=array(0=>13,1=>'Feather');
$a[3]=array(0=>40,1=>'Rabit');
$z=min($a);$y=max($a);
echo "The easiest is ".$z[1]." with only ".$z[0]." pounds!<br>";
echo "The heaviest is ".$y[1]." with ".$y[0]." pounds!";

你说什么?

【问题讨论】:

我说自己测试会产生最有益的结果。 这是一个黑客。很好的修复,但没有什么可建立的。 @Dagon 在我写它的时候我测试了它:D lol @user....我已经用 10,000 个数据测试了它,它总是运行良好。 【参考方案1】:

是的,它是可靠的。可以安全地假设min(array(1, 2, ..., n)) 等同于min(1, 2, ..., n),而documentation 专门介绍了min 如何比较多个数组:

// With multiple arrays, min compares from left to right
// so in our example: 2 == 2, but 4 < 5
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)

【讨论】:

【参考方案2】:

我对 min 如何处理您的输入类型的理解是:

    只考虑项目数最少的数组。 比较第一个元素 如果出现平局,则比较每个数组的下一个元素。重复步骤。

例如:

array(
  array(1, "A"),
  array(2),        // min
)


array(
  array(1, "A"),  // min
  array(2, "A"),        
)

array(
  array(1, "Z"),  
  array(1, "A"),  // min
)

我没有该信息的来源,但我记得它是这样工作的。

【讨论】:

对...我刚试过...你是对的 $a[0]=array(0=>522,1=>'Truck'); $a[1]=array(0=>230,1=>'熊',2=>'au');卡车比熊容易...谢谢konforce! ;)【参考方案3】:

我不确定这是否总是有效。如有疑问,请自行实现该功能:

function extremes($array, $key=0) 
    if (count($array) === 0) return null;
    $min = $max = null;
    foreach ($array as &$val) 
        if (!isset($val[$key])) continue;
        if ($min > $val[$key]) $min = $val[$key];
        else if ($max < $val[$key]) $max = $val[$key];
    
    return array($min, $max);


$a = array(array(522, 'Truck'), array(230, 'Bear'), array(13, 'Feather'), array(40, 'Rabit'));
list($z, $y) = extremes($a);

【讨论】:

与 min 和 max 函数的作用相同...不是吗?【参考方案4】:

我能找到的唯一证据表明它旨在能够使用数组数组进行比较是这个错误报告来改进 php 文档。 http://bugs.php.net/bug.php?id=50607

尽管如此,他们不太可能删除此功能,因为它必须通过递归方式来比较数组。使用函数时,参数列表本身通常是一个数组,因为没有有限数量的参数。

【讨论】:

以上是关于带有数组的PHP min和max,它可靠吗?的主要内容,如果未能解决你的问题,请参考以下文章

计算数组中最大值和最小值的差值

函数中的错误最小和最大分配

PHP如何取二维数组中的某列的最大值和最小值?

如何让php或者JS产生随机名字,从可选名字中随机显示

php怎么随机高亮其中一个数组的字体颜色?

C语言中“max”和“min”如何使用?