⊗ppPmRcMA 220 of 447 menu

PHPにおける再帰と多次元構造

任意のレベルのネストを持つ多次元配列があるとします。 例えば、以下のようなものです:

<?php $arr = [ 1, [ 2, 7, 8 ], [ 3, 4, [5, [6, 7]], ] ]; ?>

ご覧の通り、この配列は複雑な構造を持ち、 この構造は任意であり、ネストのレベルはいくらでも 深くなり得ると想定されています。

この配列のすべてのプリミティブ (つまり配列ではない)要素を画面に表示したいとします。 この場合、このような配列を走査するために 単純にループを使用することはできません。 なぜなら、配列は不規則な構造を持ち、 ネストのレベルが不明だからです。

しかし、このような配列を走査するには、 再帰を使うと非常に便利です。

まず、パラメータとして配列を受け取る関数を作成し、 関数内で配列を走査するためのループを作ります:

<?php function func($arr) { foreach ($arr as $elem) { echo $elem; } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

私たちが作ったループは、 メイン配列の要素のみを走査します。 つまり、最初に1を出力し、 次に[2, 7, 8]、 そして[3, 4, [5, [6, 7]]を出力します。

それでは、ループ内でプリミティブ要素と配列要素を 区別するようにしましょう:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // 要素 - 配列 } else { // 要素 - プリミティブ echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

そして、要素が配列の場合、 関数が自分自身を呼び出し、その配列をパラメータとして 渡すようにしましょう:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { func($elem); } else { echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

任意のレベルのネストを持つ多次元配列があるとします。 例えば、以下のようなものです:

<?php $arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]]; ?>

再帰を使って、この配列のすべてのプリミティブ 要素を画面に表示してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否