2016-04-14 9 views
0

私はforeachループをDRYする最良の方法を見つけようとしています。ノードをツリー配列に追加するには、子ノードがある場合のみ、ループが必要です。DRY foreachループと動的変数

$categories = Category::all(); 

$nodes = $categories->toTree(); 

$tree[] = [ 
    'id' => null, 
    'name' => '--No Parent--' 
]; 

foreach ($nodes as $node) { 

    $tree[] = [ 
     'id' => $node->id, 
     'name' => $node->name 
    ]; 

    foreach ($node->children as $node2) { 

     $tree[] = [ 

      'id' => $node2->id, 
      'name' => $node->name.' > '. $node2->name 
     ]; 

    } 
} 

答えて

0

このような状態を確認する単純なように見えます。

$categories = Category::all(); 

$nodes = $categories->toTree(); 

$tree[] = [ 
    'id' => null, 
    'name' => '--No Parent--' 
]; 

foreach ($nodes as $node) { 
    if (is_array($node->children) && count($node->children) > 0) { 
     $tree[] = [ 
      'id' => $node->id, 
      'name' => $node->name 
     ]; 

     foreach ($node->children as $node2) { 

      $tree[] = [ 

       'id' => $node2->id, 
       'name' => $node->name.' > '. $node2->name 
      ]; 

     } 
    } 
} 
+0

これは私がforeachを繰り返すために必要なので、私にとってはうまくいかないでしょう。また、2番目のforeachに変数$ node2があることに気づくでしょう。 – user2675057

+0

$ノードのように見えますか? var_dumpを実行しますか?あなたが望んでいるものを正確に理解することができません。ノード配列$の単純化されたバージョンを表示し、それを表示したいと思うものを理解するのに役立ちます。 – Stevish

+0

$ nodes変数にはカテゴリモデルのコレクションが含まれています。コレクション{#795▼ #items:array:91 [▼ 0 =>カテゴリ{#798}} – user2675057

関連する問題