给定一个简单的数组
$testarr = array("Donna"=>3, "Luke" => 4, "Pete" =>4, "Lola" => 1);
如何只保留最大值?我知道我可以做一个
max($testarr);
然后遍历数组以删除不同的值,但可能会使用诸如array_filter之类的sg,或者可以使用一种更为优雅的衬板解决方案。
这是您的单线使用array_filter
:
<?php
$testarr = array("Donna"=>3, "Luke" => 4, "Pete" =>4, "Lola" => 1);
$max = max($testarr);
$only_max = array_filter($testarr, function($item) use($max){ return $item == $max; });
var_dump( $only_max );
输出:
array(2) {
["Luke"]=>
int(4)
["Pete"]=>
int(4)
}
注意,闭包函数是引用$max
。正如@devon所建议的那样,引用原始数组会使代码更短且更通用,以换取计算效率。
$only_max = array_filter($testarr,
function($item) use($testarr){
return $item == max($testarr);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句