我是一个.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;
}
当我第二次调用drawCategories函数时,通过引用传递变量$catlistids然后所有网站内容消失,我没有收到任何类型的错误,但我想这与WAMP服务器定义有关。
谁能帮我解决这个问题?
提前致谢
函数调用上没有引用符号 - 仅在函数定义上。仅函数定义就足以通过引用正确传递参数。从PHP 5.3.0
开始,当你使用&foo(&$a);
时,你会得到一个警告,说"调用时间传递引用"已被弃用。截至PHP 5.4.0
,调用时按引用传递被删除,因此使用它会产生致命错误。
您可以通过引用将变量传递给函数,以便函数可以修改变量。从函数调用中删除&
并尝试以下方式:
function drawCategories($parent_id, &$catlistids="", $level=0, $selected="") {
//^