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 サイトの他の関連記事を参照してください。