Попытка создать меню, управляемое БД, которое основано на 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);
}
?>
И структура БД
Для целей тестирования
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;
Я не могу понять, что не так.
//try echoing the list values //Your syntax is wrong array_key_exists($yourKey, $yourSearchArray);
print_r($results);
сразу послеlist($id, $parent, $name) = $results;
он повторил все строки, подобные этомуArray ( [id] => 4 [parent] => 1 [name] => Yeni sual )
Да, вы правы. Но что я должен исправить? Пожалуйста, измените код