2016-10-12 5 views
2

Я пытаюсь отобразить набор данных в древесном уровнеPHP вложенное меню рекурсивная функция

Например, это моя база данных записи

enter image description here

Я хочу, чтобы отобразить его как

enter image description here

и так далее.

Конечно выше изображения вручную ввести сам

<?php 
 
    require 'tree.php'; 
 
    
 
    $tree = array(
 
     
 
\t 'wwq' => array(
 
\t 
 
\t   'Project4' => array(
 
\t \t \t  'phase1', 
 
\t \t \t \t 
 
\t \t \t \t), 
 
\t   
 
\t   'Project23' => array(
 
\t \t \t  'phase23', 
 
\t \t \t \t 
 
\t \t \t \t), 
 
\t \t \t 
 
\t \t \t 'Test1' => array(
 
\t \t \t  'test1', 
 
\t \t \t \t 
 
\t \t \t \t), 
 
\t   'Projecttest' => array(
 
\t \t \t  'phasetest', 
 
\t \t \t \t 'testtest', 
 
\t \t \t \t) 
 
\t \t \t 
 
\t \t \t \t 
 
\t ), 
 
\t  
 
\t 
 
\t); 
 
\t 
 
\t echo treeOut($tree); 
 
?>

и моя функция

<?php 
 
function treeOut($row_Recordset1){ 
 
\t $markup = ''; 
 
\t foreach ($row_Recordset1 as $branch => $twig){ 
 
\t \t $markup .= '<li>' . ((is_array($twig)) ? $branch . treeOut($twig) : $twig). '</li>'; 
 

 
\t \t } 
 
\t 
 
\t return '<ul>' . $markup . '</ul>'; 
 
\t 
 
\t } 
 
?>

Итак, мой вопрос в том, как я могу сделать массив для цикла, а не ключом к каждому из данных.

Спасибо, если кто-нибудь может мне помочь !! Если любой вопрос может задать мне следующий комментарий.

+0

_ «Мой вопрос заключается в том, как я могу заставить массив к циклу вместо того, чтобы я вставлял все данные» _ Я не понимаю, что изменилось бы с циклом for? Насколько я могу понять, будете ли вы использовать цикл 'for' или' foreach', вам все равно придется вводить одни и те же данные? – Epodax

+0

Я, вышеупомянутый массив вручную вводит сам, но я не хочу этого делать. Я хочу получить данные из цикла for. Могу я узнать, где я ошибаюсь? – eric

ответ

0

Если речь идет о том, как вы можете подготовить массив в требуемом формате перед передачей его treeOut() функции, то попробуйте добавить эти строки перед вызовом treeOut():

$tree = array(); 

$sql = "SELECT * FROM tbl_name ORDER BY companyName ASC, projectName ASC, phaseName ASC"; 
$result = mysql_query($connection, $sql); 

while($data = mysql_fetch_array($result)){ 
    $tree[ $data['companyName'] ][ $data['projectName'] ][] = $data['phaseName']; 
} 

echo treeOut($tree); 

Надежда это то, что вы ищете, и поможет ,

+0

Спасибо за помощь !!! Тем не менее, эта ошибка появляется. Msg Предупреждение: mysqli_query() ожидает, что параметр 1 будет mysqli – eric

+0

Могу ли я узнать, как его решить? – eric

+0

Измените 'mysqli_ *' на 'mysql_ *', если вы используете старые функции mysql. –

Смежные вопросы