Попытка создать db-ведомое меню, основанное на родительской-дочерней структуре. Значения родительских столбцов всех корневых элементов равны 0. Постоянное отслеживание следующих ошибок
Undefined offset: 0,1,2 on line list($id, $parent, $name) = $results; Undefined index on line array_key_exists() expects exactly 2 parameters, 1 given on line if (!array_key_exists($tree[$parent]['children'][$id])) { Warning: array_key_exists() expects exactly 2 parameters, 1 given on line if (!array_key_exists($tree[$parent]['children'][$id])) {
PHP-код
<?php function generateMenu($parent, $level, $menu, $utype) { global $db; $tree = array(); $stmt = $db->prepare("select id, parent, name FROM navigation WHERE menu=? AND user_type=?") or die($db->error); $stmt->bind_param("ii", $menu, $utype) or die($stmt->error); $stmt->execute() or die($stmt->error); $stmt->store_result(); $meta = $stmt->result_metadata(); $bindResult = array(); while ($columnName = $meta->fetch_field()) { $bindResult[] = &$results[$columnName->name]; } call_user_func_array(array($stmt, 'bind_result'), $bindResult); while ($stmt->fetch()) { list($id, $parent, $name) = $results; $tree[$id] = array('name' => $name, 'children' => array(), 'parent' => $parent); if (!array_key_exists($id, $tree[$parent]['children'])) { $tree[$parent]['children'][$id] = $id; } } $stmt->close(); print_r($tree); } ?>
И структура БД
Для целей тестирования
die(print_r($results));
сразу после while ($stmt->fetch()) {
. Получение первой строки моей таблицы db как Array ( [id] => 1 [parent] => 0 [name] => Sual ) 1
. Пробовал while ($results=$stmt->fetch()) {
вместо while ($stmt->fetch()) {
. Получили следующие ошибки снова
Неопределенный индекс в строке array_key_exists () ожидает ровно 2 параметра, 1 задано в строке if (! Array_key_exists ($ tree [$ parent] ['children'] [$ id])) {
Предупреждение: array_key_exists () ожидает ровно 2 параметра, 1 задано в строке if (! Array_key_exists ($ tree [$ parent] ['children'] [$ id])) {
Пробовал if (!array_key_exists($id, $tree[$parent]['children'])) {
вместо if (!array_key_exists($tree[$parent]['children'][$id])) {
. Получили следующие ошибки снова
Неопределенное смещение: 0,1,2 в списке строк ($ id, $ parent, $ name) = $ results;
Не могу понять, что случилось. Помогите решить эту проблему.