0

たとえば、配列内に配列があります。

[ 
    [0, 20, 5], 
    [5, 0, 15], 
    [5, 10, 0]
]

各列の最大数を取得する必要があります。

  • の最大値[0 , 5 , 5]5であるため、結果配列に入ります。
  • の最大値[20, 0, 10]20であるため、結果配列に入ります。
  • の最大値[5, 15, 0]15であるため、結果配列に入ります。

最終結果の配列には が含まれている必要があります[5, 20, 15]

4

2 に答える 2

4

まず、配列を転置する必要があります(行と列を反転します)。

function array_transpose($arr) {
   $map_args = array_merge(array(NULL), $arr);
   return call_user_func_array('array_map', $map_args);
}

PHP 2D配列を転置するためのより良い方法はありますか? -それがどのように機能するかについての説明については、その質問を読んでください)

max次に、関数を新しい配列にマップできます。

$maxes = array_map('max', array_transpose($arr));

例:http ://codepad.org/3gPExrhO

出力[インデックス1は(20、0、10)の最大値である必要があると言ったので、これは(5、15、20)の代わりにあなたが意味したことだと思います]:

Array
(
    [0] => 5
    [1] => 20
    [2] => 15
)
于 2012-11-08T19:41:17.813 に答える
0

splat 演算子がない場合、array_map()withmax()は各行の最大値を返します。( [20, 15, 10])

データ構造を転置する splat 演算子を使用すると、各列の最大値が返されます。

コード: (デモ)

$array = [ 
    [0, 20, 5], 
    [5, 0, 15], 
    [5, 10, 0]
];

var_export(
    array_map('max', ...$array)
);

出力:

array (
  0 => 5,
  1 => 20,
  2 => 15,
)
于 2021-08-29T17:43:51.533 に答える