我想找出数组中每个键的最大值
$arr1= array(
0=>array(1,2,3),
1=>array(2,4,6),
2=>array(25,4,5));
}
我想找到相应密钥的每个值的最大值 最后的输出是
$max_array = array(25,4,6);
使用以下代码我得到错误max():当只给出一个参数时,它必须是
中的数组foreach ($res_arr as $k=>$subArray) {
foreach ($subArray as $id=>$value) {
$spanmaxArray[$id] = max($value);
}
}
答案 0 :(得分:4)
首先,旋转数组使列成为行
$arr1= array(
0=>array(1,2,3),
1=>array(2,4,6),
2=>array(25,4,5)
);
$arr2 = array();
foreach($arr1 as $subArray) {
foreach($subArray as $k=>$v) {
$arr2[$k][] = $v;
}
}
然后,使用array_map作为@HamZa
$max_array = array_map('max', $arr2);
print_r($max_array);
答案 1 :(得分:2)
绝对是最短的版本:
$max_array = array_map('max', $arr1);
array_map()接受$ arr1的每个元素数组并对其应用max()。
在看到每个列位置的最大值后编辑:
$sorted = array();
for ($i = 0; $i <=2; $i++) {
$sorted[$i] = array_column($input, $i);
}
这循环遍历数组并将array_column()应用于每个(需要PHP 5.5)。
所以:
$sorted = array();
for ($i = 0; $i <=2; $i++) {
$sorted[$i] = array_column($arr1, $i);
}
$max_array = array_map('max', $sorted);
答案 2 :(得分:1)
foreach ($res_arr as $k=>$subArray){
$max = 0;
foreach ($subArray as $id=>$value){
if ($value>$max){
$max = $value;
}
}
$spanmaxArray[$k] = $max;
}
试试这个。
答案 3 :(得分:0)
您只需要一个循环,因为max函数将数组作为参数。但你给出的答案是错误的,除非我误解了这个问题。
我认为你所追求的是:
$max_array = array_map('max', $arr1);
答案 4 :(得分:0)
所有先前的答案都太努力了。
array_map()
作为迭代函数。...
)打开多维数组的包装;换句话说,将包含三个子数组的单个数组转换为三个单独的数组。max()
同步迭代的三个元素上调用array_map()
。代码:(Demo)
$arr1 = [
[1, 2, 3],
[2, 4, 6],
[25, 4, 5],
];
var_export(array_map('max', ...$arr1));
以上是以下单行代码的一种更加通用和简洁的版本,它对示例数组具有相同的作用:
var_export(array_map('max', $arr1[0], $arr1[1], $arr1[2]));
输出:
array (
0 => 25,
1 => 4,
2 => 6,
)
*给研究人员的注释:如果处理具有关联的第一级键的多维数组,则将需要索引第一级,以使splat运算符不会阻塞键。
...array_values($array)