Php 如何从子id获取父id(根父id)

Php 如何从子id获取父id(根父id),php,recursion,hierarchical-trees,Php,Recursion,Hierarchical Trees,可能重复: 我的数据库结构看起来像 id|parent| 1 | 0 | 2 | 0 | 3 | 0 | 4 | 1 | 5 | 4 | 6 | 5 | 我需要一个函数来获取id的父(即parent=0)作为参数 例如。。get_parent(6)=返回1 我做了一些研究,发现了这个问题 我试着做这个函数 function get_parent_id($cid,$found=array()) { array_push($foun

可能重复:

我的数据库结构看起来像

id|parent|
1 |   0  |
2 |   0  |
3 |   0  |
4 |   1  |
5 |   4  |
6 |   5  |
我需要一个函数来获取id的父(即parent=0)作为参数 例如。。get_parent(6)=返回1 我做了一些研究,发现了这个问题

我试着做这个函数

    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查询中获取父ID,还是使用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);
?>

你真的不应该重复发帖。您应该确保收到原始问题的答案。即使如此。如果除了告诉我规则和规定外,还有人能给我提供答案,我将非常高兴。对不起,我太粗鲁了。我急切地想知道这个问题的答案。请试着理解你不想要它的直接家长。。。您想一直导航到树的上一层,直到它成为根节点,对吗?只需对每个父对象执行递归循环,直到父对象=0。他需要“根”父对象。所以不是直接的父母。您需要递归,直到获得$arr[$id]['parent']=0,然后返回$id;是的,我想要根家长。而@mikeMurko我正努力做到这一点。如果我这样做,我会把我的答案放在这里。我几乎快得到答案了。但是我被树的层次弄糊涂了哦,好吧,那是有道理的,我已经更新了我的答案,以证明你们在寻找什么。我已经测试并验证了它的正常工作。非常感谢@jmgran2。你救了我一天…没问题,很高兴我能帮忙。让我知道如果你需要任何解释的代码,因为我没有评论它。