ホームページ  >  記事  >  バックエンド開発  >  PHP で 2 次元配列を複数の 1 次元配列に変換する方法

PHP で 2 次元配列を複数の 1 次元配列に変換する方法

青灯夜游
青灯夜游オリジナル
2021-05-20 18:05:312266ブラウズ

php メソッドで 2 次元配列を複数の 1 次元配列に変換します: 1. array_reduce() 関数を使用して変換します; 2. array_walk_recursive() 関数を使用して変換します; 3. array_map( ) 変換する関数。

PHP で 2 次元配列を複数の 1 次元配列に変換する方法

#このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP 2 -次元配列 (または任意の次元配列) を 1 次元配列に変換するメソッド

    array_reduce 関数メソッド
  • array_walk_recursive 関数メソッド
  • array_map function method
次の 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 つあります:

1 つは、指定された列を 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())

Because

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<span class="hljs-variable"></span>配列。

その他、

array_walkメソッドやforeach<span class="hljs-keyword"></span>ループメソッドも使用できますが、原理は上記と同様です。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHP で 2 次元配列を複数の 1 次元配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。