函数只返回一次,为什么?

时间:2012-11-12 17:14:43

标签: php recursion foreach

在编码过程中我真的遇到了这个问题。 我运行了foreach循环,对于每个项目,我必须从函数中获取某个值。 但我只有一个回来了。我无法弄清楚发生了什么。我希望你们一定会的。 以下是我的程序的简短版本。 最后给出了数据库结构。

<?php


function opendb() {
    mysql_connect("localhost", "root", "root");
    mysql_select_db("something_db");
}

function sql_query($sql) {
    $datas = array();
    if ($res = mysql_query($sql)) {
        $x = 0;

        while ( $data = mysql_fetch_assoc($res) ) {
            $datas[$x] = $data;
            $x += 1;
        }
    }
    return $datas;
}

function get_parent_id($table, $parent, $cid) {

    // cid=>child id
    $sql = "SELECT * FROM $table WHERE id=$cid";
    $datas = sql_query($sql);
    $pid = $datas[0]['parent'];
    $p_id = $datas[0]['id'];
    if ($pid != 0) {
        get_parent_id($table, $parent, $pid);
    } else {

        return $p_id;
    }
}

opendb();

$datas_pkg = sql_query("SELECT * FROM tbl_packages WHERE 1");
foreach ( $datas_pkg as $data_pkg ) {
    echo $data_pkg['destination_id'] . '-->';
    echo $parent_id = get_parent_id('tbl_destinations', 'parent', $data_pkg['destination_id']);
    echo '<br/>';
}
?>

数据库结构..

tbl_destinations

+--------+-------------------------+-----------+ 
| id(int)|destination_name(Varchar)|parent(int)| 
+--------+-------------------------+-----------+

tbl_packages

+-------+---------------------+-------------------+
|id(int)|package_name(varchar)|destination_id(int)|
+-------+---------------------+-------------------+

如果我不明白我的问题,请告诉我,以便我可以帮助你帮助我。

1 个答案:

答案 0 :(得分:1)

  if($pid!=0)
  {
            get_parent_id($table,$parent,$pid);

  }

您调用该函数,但从不使用其值。