繁体   English   中英

从数组中获取项目的有效而优雅的方法

[英]Effective and elegant way to get an item from array

例如,我有一个像这样的数组:

$a = array(
    0 => array(
        'foo' => 42
    ),
    1 => array(
        'foo' => 143
    ),
    2 => array(
        'foo' => 4
    )
);

而且我需要在“ foo”中获取最大值。 当前代码是这样的:

$foos = array_map(function($v) {
    return $v['foo'];
}, $a);
$keys = array_keys($foos, max($foos));
$winner = $a[$keys[0]];
print_r($winner);

这是一件可怕的事情。

最优雅?

$maxValue = max($a);

http://www.php.net/manual/zh/function.max.php

甚至适用于多维:

<?php
$a = array(
    0 => array(
        'foo' => 42
    ),
    1 => array(
        'foo' => 143
    ),
    2 => array(
        'foo' => 4
    )
);

$maxValue = max($a);
print_r($maxValue["foo"]);
echo $maxValue["foo"];

输出回波143

使用print_r() Array ( [foo] => 143 )输出Array ( [foo] => 143 )

您可以尝试:

$input  = array(
  array('foo' => 42),
  array('foo' => 143),
  array('foo' => 4),
);

$output = array_reduce($input, function($a, $b) {
  return $a['foo'] > $b['foo'] ? $a : $b;
});

输出:

array (size=1)
  'foo' => int 143

自己运行foreach 易读易读。

$highest_foo = PHP_INT_MIN;
$result = null;
foreach ($a as $key=>$foo) {
    if ($foo['foo'] > $highest_foo) {
       $result = $a[$key];
       $highest_foo = $foo['foo'];
    }
}
print_r($result);
$array = array(
    0 => array(
        'foo' => 42
    ),
    1 => array(
        'foo' => 143
    ),
    2 => array(
        'foo' => 4
    )
);

$maxs = array_keys($array, max($array));

print_r(max($array));//Highest value
print_r($maxs);//Key of hishest value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM