2016-04-14 20 views
0

Bir foreach döngüsünde DRY uygulamasının en iyi yolunu bulmaya çalışıyorum. Düğümün, ağaç dizisine yalnızca herhangi bir çocuğu varsa, eklemesi gerekiyor.DRY foreach döngü dinamik değişkenli

$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 
     ]; 

    } 
} 

cevap

0

sizin için çalışacak şartıyla denetler basit if benziyor.

$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

Bu, foreach yinelemek için ihtiyacım olduğu gibi benim için işe yaramaz. Ayrıca, ikinci foreach değişkeninin $ node2 değişkenine sahip olduğunu fark edin. – user2675057

+0

$ düğümlerinin neye benzeyebileceğini bana gösterir misiniz? Bir var_dump mı? Tam olarak ne istediğinizi anlamakta sorun yaşıyorum. Eğer bir $ nodes dizisinin basitleştirilmiş bir versiyonunu gösterebildiysen ve bunu anlatabilmem için göstermesini istediğin şeyi gösterseydin. – Stevish

+0

$ düğümleri değişkeni bir kategori modelleri koleksiyonu içerir. Koleksiyon {# 795 ▼ #etems: array: 91 [▼ 0 => Kategori {# 798 ▶} – user2675057