私はこれにどのように接近するかについて少し損失がありますが、私はforeach
が正しい答えではないと思っています。私はarray_walk()
とRecursiveArrayIterator
の存在を知っています。しかし、私はどちらかを使用して実際の経験がないので、私は正しい方向に少しのポインタで行うことができます。 (私は答えに何か違いがあればPHP 7.1.9で作業しています)。1次元配列のPHP親子反復
ソースデータ
私は、オブジェクトの親/子ツリーを含む単一次元配列を持っています。ツリーに未知の変数ネスト深度があると仮定できます。基本的な例は、次のようになります。
$sampleParent=array("id"=>101,"level"=>1,"parent_id"=>1,"name"=>"parent","otherparam"=>"bar");
$sampleChildD1=array("id"=>234,"level"=>2,"parent_id"=>101,"name"=>"level1","otherparam"=>"bar");
$sampleChildD2=array("id"=>499,"level"=>3,"parent_id"=>234,"name"=>"level2","otherparam"=>"bar");
$sampleTree=array($sampleParent,$sampleChildD1,$sampleChildD2);
所望の出力
究極の目標は、出力HTMLリスト(すなわち<ul><li></li></ul>
)、親ごとに1つのリストにあります。 <ul>
タグをネストすることによって達成された子供の入れ子。上の例の場合:
<ul>
<li>
<a href="#">parent</a>
</li>
<ul>
<li>
<a href="#">level1</a>
<ul>
<li>
<a href="#">level2</a>
</li>
</ul>
</li>
</ul>
</ul>
これまでに何を試しましたか?ツリーを一次元配列に格納するにはどうすればよいですか?親は常に1人だけですか? –
$ sampleTree = '$ sampleTree = array($ sampleParent、$ sampleChildD1、$ sampleChildD2);'配列または多次元配列を持つ配列になります。これは、sampleTreeの処理/解析中に、1次元配列を処理していないことを明確にするために、問題を解決するのに役立つものではありません。 –