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

PHPで多次元配列を走査する方法

PHPz
PHPzオリジナル
2023-04-19 11:39:251203ブラウズ

PHP は、一般的に使用されるサーバーサイド プログラミング言語として、多次元配列を扱うことがよくあります。多次元配列を解析して操作する場合、よくある質問は、これらの配列のさまざまなレベルをどのように横断するかということです。この記事では、PHP で多次元配列を走査する方法を紹介します。

  1. foreach ループは多次元配列を走査します

PHP では、foreach ループを使用して配列を走査できます。多次元配列を走査する場合、foreach ループをネストして各配列レベルに順番にアクセスできます。以下は簡単な例です:

$array = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);

foreach ($array as $items) {
    foreach ($items as $item) {
        echo $item . ' ';
    }
    echo '<br>';
}

上記のコードは次の結果を出力します:

1 2 3 
4 5 6 
7 8 9

ご覧のとおり、最初に foreach ループを使用してマルチ レベルの最初のレベルを走査します。次元配列を作成し、ループ本体に進みます。ネストされた foreach ループを使用して、2 番目のレベルを走査します。これにより、多次元配列全体が順番に出力されます。

  1. 再帰関数を使用して多次元配列を走査する

foreach ループの使用に加えて、再帰関数を使用して多次元配列を走査することもできます。再帰関数とは、関数の定義過程で関数自体を呼び出す手法を指します。多次元配列にアクセスする場合、最も内側の要素に到達するまで配列の各レベルをさらに深く掘り続ける再帰関数を作成できます。以下は、再帰関数を使用して多次元配列を走査する例です:

$array = array(
    'name' => '张三',
    'age' => 18,
    'hobbies' => array(
        'reading',
        'swimming',
        'traveling'
    ),
    'friends' => array(
        array(
            'name' => '李四',
            'age' => 20
        ),
        array(
            'name' => '王五',
            'age' => 22,
            'hobbies' => array(
                'singing',
                'dancing'
            )
        )
    )
);

function traverseArray($arr)
{
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            traverseArray($value);
        } else {
            echo $key . ' => ' . $value . '<br>';
        }
    }
}

traverseArray($array);

上記のコードは次の結果を出力します:

name => 张三 
age => 18 
0 => reading 
1 => swimming 
2 => traveling 
name => 李四 
age => 20 
name => 王五 
age => 22 
0 => singing 
1 => dancing

ご覧のとおり、最初にtraverseArray という名前の再帰関数。配列を走査するために関数本体で foreach ループが使用されます。ループ本体内で is_array 関数を使用して、現在の要素が配列型であるかどうかを検出します。その場合は、traverseArray 関数を再帰的に呼び出して走査を続行します。それ以外の場合は、要素のキーと値のペアを直接出力します。

再帰関数はそれ自体を無限に呼び出し、無限ループが発生する可能性があることに注意してください。これを回避するには、関数本体内で再帰を終了する条件を追加する必要があります。上記の例では、すべての非配列要素が最も内側の要素であると想定しているため、それらを再度トラバースする必要はありません。

  1. array_walk_recursive 関数を使用して多次元配列を走査する

PHP では、array_walk_recursive 関数を使用して多次元配列を走査することもできます。この関数は、多次元配列に対してコールバック関数を再帰的に実行する方法です。

次は、array_walk_recursive 関数を使用して多次元配列を走査する例です:

$array = array(
    'name' => '张三',
    'age' => 18,
    'hobbies' => array(
        'reading',
        'swimming',
        'traveling'
    ),
    'friends' => array(
        array(
            'name' => '李四',
            'age' => 20
        ),
        array(
            'name' => '王五',
            'age' => 22,
            'hobbies' => array(
                'singing',
                'dancing'
            )
        )
    )
);

function output($value, $key)
{
    echo $key . ' => ' . $value . '<br>';
}

array_walk_recursive($array, 'output');

上記のコードは次の結果を出力します:

name => 张三 
age => 18 
0 => reading 
1 => swimming 
2 => traveling 
name => 李四 
age => 20 
name => 王五 
age => 22 
0 => singing 
1 => dancing

Output という名前の出力関数。そして、array_walk_recursive 関数の 2 番目のパラメーターに関数名を渡します。出力関数本体では、現在の要素のキーと値のペアを直接出力します。

array_walk_recursive 関数は、多次元配列をレイヤーごとに走査しないことに注意してください。代わりに、配列内の各要素の深さ優先の走査を実行し、配列以外の各要素を再帰的に走査してから、最も深い配列要素を走査します。したがって、この機能は便利ですが、場合によっては特定の走査ニーズを満たせない場合があります。

結論

PHP では、多次元配列を走査する方法がたくさんありますが、最も一般的なのは foreach ループと再帰関数を使用することです。 array_walk_recursive 関数もオプションのトラバーサル メソッドを提供しますが、その効果は他の 2 つのメソッドほど柔軟ではない可能性があります。プログラムを作成するときは、特定のニーズに基づいて適切な走査方法を選択する必要があります。

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

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