PHP 按引用变量


PHP By Reference variable

我是一个.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;
}

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

谁能帮我解决这个问题?

提前致谢

函数调用上没有引用符号 - 仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从PHP 5.3.0开始,当你使用&foo(&$a);时,你会得到一个警告,说"调用时间传递引用"已被弃用。截至PHP 5.4.0,调用时按引用传递被删除,因此使用它会产生致命错误。

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

function drawCategories($parent_id, &$catlistids="", $level=0, $selected="") {
                                  //^