Возможный дубликат:
функция возвращается только один раз, почему?
моя структура базы данных выглядит
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); ?>
Обратите внимание, что код непроверен и просто образец.