Дерево для генерации для jsTree - PullRequest
1 голос
/ 05 марта 2010
function createJsonTree($array, $currentParent, $currLevel = 0, $prevLevel = -1) {

 foreach ($array as $categoryId => $category) {

  if ($currentParent == $category['parent']) {      

   if ($currLevel > $prevLevel) $output .= ' , "children":[ '; 

   if ($currLevel == $prevLevel) $output .= " }, ";

    $output .= '{ "data" :'.'"'.$category['menu_title'].'"';

   if ($currLevel > $prevLevel) { $prevLevel = $currLevel; }

   $currLevel++; 

    $output .= self::createJsonTree($array, $category['id'], $currLevel, $prevLevel);

    $currLevel--;      
  } 

 }

 if ($currLevel == $prevLevel) $output .= " }] ";
 return $output;
}

Ответы [ 2 ]

2 голосов
/ 08 марта 2010

Есть ли причина, по которой json_encode не будет работать для этого?

http://us3.php.net/json_encode

1 голос
/ 09 декабря 2011

Вы можете сгенерировать дерево следующим образом:

function createTree()
{
    $sql = "SELECT id, parent_id, title FROM category order by id ";
    $filas = UtilConexion::$pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    $arbol = '{"data":[{"attr":{"id":"000"},"data":"Nodo raíz","state":"open"' .
    $this->createJsonTree($filas, null) . '}]}';
    return $arbol;
}
...