我是一名.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 .=" ";
$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服务器定义有关。
有人可以帮我解决这个问题吗?
提前致谢
答案 0 :(得分:1)
函数调用上没有引用符号 - 仅在函数定义上。单独的函数定义足以通过引用正确传递参数。从PHP 5.3.0
开始,您会收到一条警告,指出当您使用&amp;时,不推荐使用“call-time pass-by-reference”。在foo(&$a);
。从PHP 5.4.0
起,删除了调用时传递引用,因此使用它会引发致命错误。
您可以通过引用函数传递变量,以便函数可以修改变量。从函数调用中删除&
并尝试这种方式:
function drawCategories($parent_id, &$catlistids="", $level=0, $selected="") {
//^