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

PHPで多次元配列を一次元配列に変換する方法

PHPz
リリース: 2023-04-19 11:09:59
オリジナル
1316 人が閲覧しました

PHP では、多次元配列は、別の配列または複数の配列を含む配列構造を指します。例:

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);
ログイン後にコピー

これは 3 つの要素を含む 2 次元配列であり、各要素は 2 つのキーを含むサブ配列です-value のペアは「名前」と「年齢」です。この 2 次元配列を 1 次元配列に変換したい場合は、PHP のいくつかの関数を使用してそれを実現できます。

方法 1: array_column() 関数を使用する

PHP の array_column() 関数は、配列内の各要素の指定されたキーに対応する値を抽出し、これらの値を含む新しい配列を返すことができます。 。指定されたキーが存在しない場合、その要素は無視されます。 2 次元配列内のすべての要素の「name」キーに対応する値を抽出し、3 つの要素を含む 1 次元配列を取得できます。

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

$names = array_column($array, 'name');
print_r($names);  // 输出:Array ( [0] => John [1] => Mary [2] => Mark )
ログイン後にコピー

方法 2: array_reduce() 関数を使用します。

PHP の array_reduce() 関数は、コールバック関数の規則に従って配列を反復して、最終値を生成できます。この関数を使用すると、2 次元配列の各要素の部分配列を 1 次元配列にマージできます。

$array = array(
  array('name' => 'John', 'age' => 20),
  array('name' => 'Mary', 'age' => 25),
  array('name' => 'Mark', 'age' => 30)
);

$flatten = array_reduce($array, function($carry, $item) {
  return array_merge($carry, $item);
}, array());
print_r($flatten);  // 输出:Array ( [name] => Mark [age] => 30 )
ログイン後にコピー

上記のコードでは、array_reduce() 関数はコールバック関数と初期値を受け入れます。 。コールバック関数のパラメータ $carry は現在の結果を表し、$item は現在の要素の値を表します。初期値は空の配列です。これは、最終結果の配列が空の配列を初期値として反復処理を開始することを意味します。 array_merge() 関数は、現在の要素の部分配列と前の結果の配列をマージするためにコールバック関数で使用されます。

2 次元配列内の各要素のキーと値のペアの数が異なる場合、上記の方法 2 は最後の要素のすべてのキーと値のペアしか取得できないことに注意してください。より厳格な状況では、データの損失を避けるために、ループする前にサブ配列を検証できます。

上記は、PHP の多次元配列を 1 次元配列に変換する 2 つの方法です。特定の状況やデータ構造に応じて適切な方法を選択すると、コードの効率と可読性が向上します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート