[英]maximum value in php array for each key value
我想找出數組中每個鍵的最大值
$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);
}
}
首先,旋轉數組使列作為線
$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;
}
}
然后,像@HamZa 一樣使用 array_map
$max_array = array_map('max', $arr2);
print_r($max_array);
foreach ($res_arr as $k=>$subArray){
$max = 0;
foreach ($subArray as $id=>$value){
if ($value>$max){
$max = $value;
}
}
$spanmaxArray[$k] = $max;
}
嘗試這個。
絕對是最短的版本:
$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);
您只需要一個循環,因為 max 函數將一個數組作為參數。 但是你給出的答案是錯誤的,除非我誤解了這個問題。
我認為你所追求的是:
$max_array = array_map('max', $arr1);
所有早期的答案都太努力了。
array_map()
作為迭代函數。...
) 解壓多維數組; 換句話說,將包含三個子數組的單個數組轉換為三個單獨的數組。max()
,因為它們由array_map()
同步迭代。代碼:(演示)
$arr1 = [
[1, 2, 3],
[2, 4, 6],
[25, 4, 5],
];
var_export(array_map('max', ...$arr1));
以上是以下 one-liner 的更通用和簡潔的版本,它對樣本數組具有相同的效果:
var_export(array_map('max', $arr1[0], $arr1[1], $arr1[2]));
輸出:
array (
0 => 25,
1 => 4,
2 => 6,
)
*給研究人員的注意事項:如果處理具有關聯第一級鍵的多維數組,您將需要對第一級進行索引,以便 splat 運算符不會被鍵卡住。
...array_values($array)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.