Проблема с функцией PHP

0

Попытка создать меню, управляемое БД, которое основано на parent-> дочерней структуре. Значения родительского столбца всех корневых пунктов меню равны 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);
}

?>

И структура БД

Изображение 174551

Для целей тестирования

  • Пытался die(print_r($results)); сразу после того, while ($stmt->fetch()) {. Получение первой строки моей таблицы БД в виде 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;

Я не могу понять, что не так.

Теги:
database
arrays

1 ответ

3
Лучший ответ
//try echoing the list values
//Your syntax is wrong
array_key_exists($yourKey, $yourSearchArray);
  • 0
    пожалуйста, измените код, если это возможно. Как это будет выглядеть?
  • 0
    пробовал print_r($results); сразу после list($id, $parent, $name) = $results; он повторил все строки, подобные этому Array ( [id] => 4 [parent] => 1 [name] => Yeni sual ) Да, вы правы. Но что я должен исправить? Пожалуйста, измените код
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню