1

我是一名 .net 程序员,最近决定检查 PHP,到目前为止我必须说它很有趣。

我使用 WAMPServer 来处理 PHP,但在使用引用变量时遇到了问题。

这是我正在使用的代码:

function drawCategories($parent_id, $catlistids="",$level=0,$selected="") {
    global $USERLANG;
$result = mysql_query("
    SELECT 
        BPPENNYAUTOBID_categories.cat_id,
        BPPENNYAUTOBID_cats_translated.cat_name 
    FROM
        BPPENNYAUTOBID_categories 
            INNER JOIN BPPENNYAUTOBID_cats_translated ON BPPENNYAUTOBID_categories.cat_id=BPPENNYAUTOBID_cats_translated.cat_id
    WHERE
        BPPENNYAUTOBID_cats_translated.cat_name!='' 
        AND BPPENNYAUTOBID_categories.parent_id='".$parent_id."' 
        AND BPPENNYAUTOBID_cats_translated.lang='".$USERLANG."' 
    ORDER BY 
        BPPENNYAUTOBID_categories.cat_name"
);

    while ($line = mysql_fetch_array($result)) {
        if($catlistids != "") { $catlistids .= "<br />"; }
        $spaces = "";
        for($i=0;$i<$level;$i++) $spaces .="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        $catlistids .= "<option value='".$line['cat_id']."' ".($selected==$line['cat_id'] ? " selected ":"").">".$spaces.$line["cat_name"]."</option>";


        drawCategories($line["cat_id"], &$catlistids,$level+1,$selected);
 }
 return $catlistids;
}

当我第二次通过引用传递变量 $catlistids 调用 drawCategories 函数时,所有网站内容都消失了,我没有收到任何错误,但我认为这与 WAMP 服务器定义有关。

谁能帮我解决这个问题?

提前致谢

4

1 回答 1

1

函数调用没有参考符号 - 仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从 开始PHP 5.3.0,当您使用 & in 时,您将收到一条警告说“调用时传递引用”已被弃用foo(&$a);。并且从 开始PHP 5.4.0,调用时传递引用已被删除,因此使用它会引发致命错误。

您可以通过引用函数来传递变量,以便函数可以修改变量。从函数调用中删除&并尝试这种方式:

function drawCategories($parent_id, &$catlistids="", $level=0, $selected="") {
                                  //^
于 2013-09-07T10:16:03.213 回答