簡體   English   中英

每個鍵值的 php 數組中的最大值

[英]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()作為迭代函數。
  • 使用“spread/splat 運算符”( ... ) 解壓多維數組; 換句話說,將包含三個子數組的單個數組轉換為三個單獨的數組。
  • 對三個元素調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM