ホームページ  >  記事  >  バックエンド開発  >  PHPの二次元配列を一次元配列に変換する関数は何ですか?

PHPの二次元配列を一次元配列に変換する関数は何ですか?

L
Lオリジナル
2020-06-02 10:13:103297ブラウズ

PHPの二次元配列を一次元配列に変換する関数は何ですか?

#php の二次元配列を一次元配列に変換する方法

1. array_reduce 関数の方法

2. array_walk_recursive 関数メソッド

3. array_map 関数メソッド

#次の 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())

array_merge 関数は同じ文字列キーをマージするためです。 name 配列は上書きされてマージされるため、マージする前に 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_recursiveFunction メソッド

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 function method

Use a

rray_map 関数と array_reduce 関数のメソッドは、次のように似ています。

$result = [];
array_map(function ($value) use (&$result) {
   $result = array_merge($result, array_values($value));
}, $user);

必要なのは、空の $result 配列を宣言することだけです。

さらに、array_walk メソッドと foreach ループ メソッドも使用でき、原理は上記と同じです。

推奨チュートリアル: 「

PHP チュートリアル

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

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