PHP array_column()具有可能为空的列

时间:2018-10-23 18:55:57

标签: php

有人知道不使用for / foreach就能从中获得结果“ 5”的方法吗?

$array = [
    ['number1' => 1], 
    ['number1' => 1],
    ['number1' => 1], 
    ['number2' => 2], 
]

echo array_sum( array_column( $array, 'number1' ?? 'number2' ) );

我了解为什么我的示例不起作用(字符串'number1'永远不会为空)。

如果不是,那么for或foreach的性能要比使用array_column的性能低多少?

2 个答案:

答案 0 :(得分:3)

如果要始终从内部数组中获取第一项而不管其键如何,则可以映射reset来模仿array_column

echo array_sum(array_map('reset', $array));
正如其他人所建议的那样,

array_sum也可以使用,但是如果任何内部数组具有更多的值,这些值将无法为您提供所需的结果。

答案 1 :(得分:2)

出于完整性考虑,这是获得所需结果的最有效方法。

$total = 0;
foreach( $array as $sub_array )
{
    foreach( $sub_array as $value )
    {
        $total+= $value;
    }
}