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

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

PHPz
PHPzオリジナル
2023-04-20 15:02:44591ブラウズ

PHP プログラムを作成するとき、配列を扱う必要があることがよくあります。 PHP の配列は 1 次元または多次元にすることができますが、場合によっては、多次元配列を 1 次元配列に変換する必要があります。この記事では、PHP を使用して多次元配列を 1 次元配列に変換する方法を説明します。

1. 多次元配列と 1 次元配列について理解する

PHP では、多次元配列とは、他の配列を含む配列を指します。多次元配列は配列です。たとえば、次は 2 次元配列です。

$fruit = array(
    'apple' => array('type' => 'fruit', 'taste' => 'sweet'),
    'banana' => array('type' => 'fruit', 'taste' => 'sweet'),
    'carrot' => array('type' => 'vegetable', 'taste' => 'bitter')
);

この 2 次元配列を 1 次元配列に変換する場合は、array_merge_recursive() または foreach ループを使用してこれを実現できます。

2. array_merge_recursive() 関数を使用する

array_merge_recursive() 関数を使用して、多次元配列をマージできます。この関数は、同じキーのすべての値を保持しながら、複数の配列を 1 つの配列にマージします。たとえば、同じキー「apple」を持つ 2 つの配列があり、1 つは「味」と「色」の情報を含み、もう 1 つは「タイプ」と「属性」の情報を含む場合、array_merge_recursive() はすべての値を保持します。つまり、次のようになります。

$fruit = array(
    'apple' => array('taste' => 'sweet', 'color' => 'red'),
    'banana' => array('taste' => 'sweet', 'color' => 'yellow')
);

$vegetable = array(
    'apple' => array('type' => 'fruit', 'attribute' => 'delicious'),
    'carrot' => array('type' => 'vegetable', 'attribute' => 'healthy')
);

$merged = array_merge_recursive($fruit, $vegetable);

結果は、以下に示すように、$merged された多次元配列になります。

$array = Array
(
    [apple] => Array
        (
            [taste] => Array
                (
                    [0] => sweet
                    [1] => Array
                        (
                            [0] => fruit
                        )

                )

            [color] => red
            [attribute] => delicious
        )

    [banana] => Array
        (
            [taste] => sweet
            [color] => yellow
        )

    [carrot] => Array
        (
            [type] => vegetable
            [attribute] => healthy
        )

)

array_merge_recursive() 関数を使用してマージされた配列は多次元配列であるため、引き続き必要がありますforeach ループを使用して 1 次元配列に変換します。

3. foreach ループを使用する

foreach ループを使用して多次元配列を 1 次元配列に変換すると、array_merge_recursive() 関数を使用するよりも柔軟になります。 foreach ループを使用して多次元配列を 1 次元配列に変換する基本的な考え方は、多次元配列の各値を新しい 1 次元配列にコピーすることです。たとえば、上記の $fruit 配列の場合、次のコードを使用して 1 次元配列に変換できます。

$flat = array();

foreach($fruit as $key => $value) {
  if(is_array($value)) {
    $flat = array_merge($flat, array_flatten($value));
  }
  else {
    $flat[$key] = $value;
  }
}

このコードは、再帰と array_merge() 関数を使用して、多次元配列を平坦化します。 array_ flatten() 関数は次のように定義されます。

function array_flatten($array) {
  $result = array();

  foreach($array as $key => $value) {
    if (is_array($value)) {
      $result = array_merge($result, array_flatten($value));
    }
    else {
      $result[$key] = $value;
    }
  }

  return $result;
}

この関数は、それ自体を再帰的に呼び出して、多次元配列を 1 次元配列に変換します。

4. 概要

多次元配列を 1 次元配列に変換することは、PHP 開発の基本的なタスクです。この記事では、array_merge_recursive() 関数を使用する方法と foreach ループを使用する 2 つの方法について説明しました。どの方法を選択するかに関係なく、多次元配列を 1 次元配列に変換することは有用なスキルです。

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

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