Intereting Posts
При импортировании CSV-заголовка или первой строки Как загрузить файл при нажатии на путь к файлу с помощью PHP-Symfony? Есть ли способ, чтобы PHP печатал данные в веб-браузере в режиме реального времени? Как получить доступ к сеансу пользователя Magento извне Magento? Laravel ajax возвращает 500 (Внутренняя ошибка сервера) Есть ли что-то вроде CoffeeScript для PHP? Место расположения ошибки Magento simplexml_load_string () Результат от $ _SERVER , когда заголовок реферера не отправляется на сервер Приложение не может получить файл PHP или ошибку в PHP-файле Android Studio Как увеличить максимальное время выполнения в php Встроенные поля формы Symfony 1.4 в том же отступе MySQLi подготовил отчеты об ошибках Загрузите браузер Amazon AWS S3 на PHP (версия подписки AWS 4) Значение в базе данных «участники» показывает ссылку, когда пользователь является администратором PHP-методы, которые работают как в контексте, так и в статическом контексте?

Как получить родительский идентификатор (родитель root) из дочернего id

Возможный дубликат:
функция возвращается только один раз, почему?

моя структура базы данных выглядит

id|parent| 1 | 0 | 2 | 0 | 3 | 0 | 4 | 1 | 5 | 4 | 6 | 5 | 

Я нуждаюсь в функции, которая получает родительский (т.е. parent = 0) для id как параметр. Например, get_parent (6) == возвращает 1 Я провел некоторое исследование и нашел этот вопрос

Как я могу рекурсивно получить «родительский идентификатор» строк в этой таблице MySQL?

Я попытался сделать эту функцию

  function get_parent_id($cid,$found=array()) { array_push($found,$cid); $sql="SELECT * FROM tbl_destinations WHERE id=$cid"; $result = mysql_query($sql) or die ($sql); if(mysql_num_rows($result)) { while($row = mysql_fetch_assoc($result)) { $found[] = get_parent_id($row['parent'], $found); } } return $found; } 

Я звоню

 $fnd=get_parent_id(); $array_reverse($fnd); $parent_root=$fnd['0']; 

Но мой метод неправильный. Где я неправ?

Вы пытаетесь получить идентификатор родителя в SQL-запросе или с помощью PHP? Если вы хотите использовать PHP для него, вы можете либо сделать $arr[6]['parent'] предположив, что вы получили информацию из базы данных в массив. Или у вас может быть функция:

 <?php //Let's assume you have your data from the database as such $arr = array( array('id' => 1, 'parent' => 0), array('id' => 2, 'parent' => 0), array('id' => 3, 'parent' => 0), array('id' => 4, 'parent' => 1), array('id' => 5, 'parent' => 4), array('id' => 6, 'parent' => 5)); function get_key($arr, $id) { foreach ($arr as $key => $val) { if ($val['id'] === $id) { return $key; } } return null; } function get_parent($arr, $id) { $key = get_key($arr, $id); if ($arr[$key]['parent'] == 0) { return $id; } else { return get_parent($arr, $arr[$key]['parent']); } } echo get_parent($arr, 6); ?> 

Обратите внимание, что код непроверен и просто образец.