2017-09-26 3 views
0

私は入れ子集合といくつかの問題を抱えているにネストされたが、私はこれを行うと... laravel

をドロップダウンするためにJSONを設定しました持っている:

Collection {#196 ▼ 
    #items: array:7 [▼ 
    1 => "123" 
    4 => "- test2" 
    6 => "- test4" 
    2 => "1234" 
    5 => "- test3" 
    7 => "-- testtest" 
    3 => "test1" 
    ] 
} 

またはドロップダウンを正しく記入する他の方法。私はlaravelを使用しています。

答えて

0

Thxをを試してみてください、私は少し簡単に解決策発見しました:

$items = Category::withDepth()->defaultOrder()->get(); 

$list = array(); 

foreach ($items as $item) { 

    $list[$item->id] = str_repeat('-', $item->depth) . $item->name; 

} 
0

array_walk_recursiveを使用して、既存のjsonから新しい名前の配列を作成できます。以下を試してください:

$nameArray = array(); 
$items = json_decode($itemsJson); 
array_walk_recursive($items, 'getName'); 

function getName(&$item, $key) 
{ 
    if($key == 'name') 
    $nameArray[] = $item; 
} 

echo '<pre>'; 
echo json_encode($nameArray); 

array_walk_recursive($ items、array($ this、 'getName'))); PHPフレームワークコントローラで使用している場合。

0

の回答については、この

$categories = Category::defaultOrder()->withDepth()->get()->toTree(); 

$traverse = function ($categories, $prefix = '-') use (&$traverse) { 
    foreach ($categories as $category) { 
     echo PHP_EOL.$prefix.' '.$category->name; 

     $traverse($category->children, $prefix.'-'); 
    } 
}; 

$traverse($nodes); 
関連する問題