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

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

PHPz
PHPzオリジナル
2023-04-23 16:47:001227ブラウズ

PHP を使用した開発プロセスでは、通常、2 次元配列を 1 次元配列に変換する必要に遭遇します。この要件は、実際の開発では非常に一般的です。たとえば、データベース内のデータを処理する必要があります。計算が必要な一部のデータについては、通常、クエリされた 2 次元配列が 1 次元配列に変換され、計算が容易になります。 。

PHP では、2 次元配列を 1 次元配列に変換する方法は非常に簡単で、array_column() 関数を使用して実行できます。 array_column() 関数の使用方法を詳しく見てみましょう。

array_column() 関数の基本的な使用法

array_column() 関数の基本構文は次のとおりです。

array array_column( array $input,mixed $column_key [ 、mixed $index_key ] )

この関数は 3 つのパラメーターを受け入れます。$input パラメーターは変換する配列を指定し、$column_key パラメーターは 1 次元配列に変換する列名またはキー名を指定します。 , $index_key パラメータはオプションであり、新しい配列内のキー名を表すために使用されます。指定しない場合は、数値インデックスが使用されます。

たとえば、次のような 2 次元配列があります:

$users = array(

array('id' => 1, 'name' => 'Tom', 'age' => 20),
array('id' => 2, 'name' => 'Jerry', 'age' => 18),
array('id' => 3, 'name' => 'Lucy', 'age' => 22)

);

array_column を使用できます。 () 関数を使用して 1 次元配列に変換します:

$names = array_column($users, 'name');

変換結果は次のとおりです:

array ('Tom' , 'Jerry', 'Lucy')

上記の例では、 $users 配列の name フィールドを新しい 1 次元配列に変換しました。

実際の開発では、複数のフィールドを同時に 1 次元配列に変換する必要がある場合がありますが、その場合は、複数のフィールドをそれぞれ 1 次元配列に変換してから結合することができます。たとえば、次のコードは、name フィールドと age フィールドの両方を 1 次元配列に変換します。

$names = array_column($users, 'name');
$ages = array_column($users, 'age') ;
$info = array_merge($names, $ages);

変換された結果は次のとおりです:

array('Tom', 'Jerry', 'Lucy' , 20, 18, 22)

上記の例では、$name 配列と $ages 配列を結合して、新しい 1 次元配列を取得しました。

array_column() 関数の高度な使用法

上で紹介した基本的な使用法に加えて、array_column() 関数にはいくつかの高度な使用法もあります。以下に 1 つずつ紹介します。

  1. 元の配列をインデックスとして使用する

元の配列のフィールドを新しい配列のインデックスとして使用する必要がある場合があります。この場合は、array_column( ) 関数では、3 番目のパラメーター $index_key を元の配列のフィールド名として指定します。たとえば、上記の $users 配列の id フィールドを新しい配列のインデックスとして使用するには、次のように実行できます。

$users = array(

array('id' => 1, 'name' => 'Tom', 'age' => 20),
array('id' => 2, 'name' => 'Jerry', 'age' => 18),
array('id' => 3, 'name' => 'Lucy', 'age' => 22)

);
$names = array_column($ users, 'name', 'id');

変換結果は次のとおりです:

array(1 => 'Tom', 2 => ' Jerry', 3 => ; 'Lucy')

ご覧のとおり、新しい配列のキー名は元の配列の id フィールドです。

  1. 多次元配列の処理

実際の開発では、多次元配列を処理する必要がある状況に遭遇することがあります。この場合、array_map を使用できます。それぞれを変換する () 関数 2 次元配列は 1 次元配列に変換され、array_merge() 関数を使用してそれらが結合され、新しい 1 次元配列が取得されます。例:

$users = array(

array('id' => 1, 'name' => array('first' => 'Tom', 'last' => 'Smith'), 'age' => 20),
array('id' => 2, 'name' => array('first' => 'Jerry', 'last' => 'Brown'), 'age' => 18),
array('id' => 3, 'name' => array('first' => 'Lucy', 'last' => 'Johnson'), 'age' => 22)

);
$names = array_map(function($user) {

return $user['name']['first'] . ' ' . $user['name']['last'];

}, $users);
$ages = array_column($users, 'age');
$info = array_merge($names, $ages);

変換された結果は次のとおりです:

array( 'Tom Smith', 'Jerry Brown', 'Lucy Johnson', 20, 18, 22)

ご覧のとおり、$users 配列の name フィールドを 1 次元配列に変換すると、 array_map() 関数を使用し、各 2 次元配列を 1 次元配列に変換し、array_merge() 関数を使用してそれらを結合する必要があります。

概要

この記事の導入部を通じて、PHP では 2 次元配列を 1 次元配列に変換するのは非常に簡単で、array_column() 関数を使用するだけであることがわかります。複数のフィールドを 1 次元配列に変換する必要がある場合は、array_column() 関数を複数回使用して、それらを結合します。元の配列のフィールドにインデックスを付ける必要がある場合は、array_column() 関数を呼び出すときに 3 番目のパラメーターを指定できます。多次元配列を処理する必要がある場合は、array_map() 関数を使用して各 2 次元配列を変換できます。配列を 1 次元に変換し、array_merge() 関数を使用してそれらを結合します。

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

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