2016-03-24 16 views
0

に関連して変換する:あなたが持っていた場合MySQLのテーブルには、私はメニュー表を持っている多次元配列

id, slug, label, parent

親がそうidとの関係を持っています

1, 'foo-bar', 'Foo Bar', NULL

これでしょう一方、ルート項目である:

2, 'foo', 'Foo ', 1

'foo-bar'に属しますか?次に、fooなどに属するアイテムを持つことができます。

これをPHPの多次元メニュー配列に変換するにはどうすればよいですか?だから私は、のようなものを行うことができます。

<?= $menu['foo-bar']['foo'] // echos 'Foo' ?> 

私の要件はHow to convert DB table with parent son relation to multi-dimensional arrayと非常に似ていますが、答えはそこに動作しませんが。再帰的ではありません。

答えて

1

これは、あなたが欲しいものを行うことができるforeach(テストされていない)の例です。

<?php 
// $results is your data from database 
$menu = array(); 

foreach($results as $k => $result) { 
    $key = $result['id']; 
    $parent = $result['parent']; 
    if(!empty($parent)){ 
    array_push($menu[$parent]['parents'], $result); 
    } else { 
    unset($results[$k]['parent']; 
    $menu[$key] = $result; 
    } 
} 

var_dump($menu);