ホームページ  >  記事  >  バックエンド開発  >  PHP の 2 次元配列 (または任意の次元配列) を 1 次元配列に変換する方法のまとめ

PHP の 2 次元配列 (または任意の次元配列) を 1 次元配列に変換する方法のまとめ

angryTom
angryTom転載
2019-10-16 09:50:402168ブラウズ

PHP の 2 次元配列 (または任意の次元配列) を 1 次元配列に変換する方法のまとめ

次の 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 サイトの他の関連記事を参照してください。

声明:
この記事はwww.awaimai.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。