次の 2 次元配列があるとします。
$user = array( '0' => array('id' => 100, 'username' => 'a1'), '1' => array('id' => 101, 'username' => 'a2'), '2' => array('id' => 102, 'username' => 'a3'), '3' => array('id' => 103, 'username' => 'a4'), '4' => array('id' => 104, 'username' => 'a5'), );
これを 1 次元配列に変換したいとします。状況は 2 つあります。
One 指定された列を 1 次元配列に変換します。これについては、別の記事 「PHP で多次元配列から指定された列を抽出する包括的な方法」 にまとめられています。
ここでは、すべての値を 1 次元配列に変換する 2 番目のケースに焦点を当てますが、キーの値は同じであり、上書きされません。次元配列は次のようになります。
$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4', 104, 'a5');
主に以下のような方法があります。
1 array_reduce 関数のメソッド
array_reduce() 関数を使用する方が高速な方法です。
$result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value)); }, array())
array_merge 関数は、同じ文字列のキー名の配列は上書きされてマージされるため、マージする前に array_value を使用して値を取得する必要があります。
2 番目の次元が数値キー名の場合 (
$user = array( 'a' => array(100, 'a1'), 'b' => array(101, 'a2'), 'c' => array(102, 'a3'), 'd' => array(103, 'a4'), 'e' => array(104, 'a5'), );
など)、これを実行します:
$result = array_reduce($user, 'array_merge', array())
2 array_walk_recursive function method
array_walk_recursive() 関数は非常に柔軟で、任意の次元の配列を 1 次元の配列に変換できます。
$result = []; array_walk_recursive($user, function($value) use (&$result) { array_push($result, $value); });
たとえば、次の多次元配列:
$user4 = array( 'a' => array(100, 'a1'), 'b' => array(101, 'a2'), 'c' => array( 'd' => array(102, 'a3'), 'e' => array(103, 'a4'), ), );
このメソッドを使用すると、次のようになります:
$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');
3 array_map 関数メソッド
array_map 関数と array_reduce 関数の使用方法は、次のように似ています。
$result = []; array_map(function ($value) use (&$result) { $result = array_merge($result, array_values($value)); }, $user);
空の $result 配列を宣言するだけです。
さらに、array_walk メソッドと foreach ループ メソッドも使用でき、原理は上記と同じです。
PHP 関連の知識の詳細については、PHP 中国語 Web サイト をご覧ください。
以上がPHP の 2 次元配列 (または任意の次元配列) を 1 次元配列に変換する方法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。