2013-09-07 5 views
1

Я программист .net, который недавно решил проверить PHP, и до сих пор я должен сказать, что это довольно весело.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 по ссылке затем все disapears содержания веба-сайта, я не получаю какое-либо ошибки, но я полагаю, что это связано с определениями WAMP-сервера.

Может ли кто-нибудь помочь мне решить эту проблему?

Заранее спасибо

+1

Как передать переменную по ссылке? – hallaji

+0

Как вы можете видеть, я вызываю функцию drawCategories внутри себя, и когда этот вызов выполняется, я использую символ & в переменной $ catlistids, чтобы отправить его по ссылке. По крайней мере, это то, что я читал в Интернете. – andrefrua

+0

- сообщение об ошибке? 'ini_set ('display_errors', true); error_reporting (E_ALL); 'Возможно, теперь вы получите сообщение об ошибке. – NDM

ответ

1

Там нет ссылки знака на вызов функции - только на определениях функций. Определений функций достаточно, чтобы правильно передать аргумент по ссылке. Начиная с PHP 5.3.0, вы получите предупреждение о том, что «call-time-pass-by-reference» устарело, когда вы используете & в foo(&$a);. И по состоянию на PHP 5.4.0 удаленная переадресация вызова была удалена, поэтому использование этого параметра приведет к фатальной ошибке.

Вы можете передать переменную по ссылке на функцию, чтобы функция могла изменять переменную. Удалите & от вызова функции и попробуйте так:

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

Выполняя это изменение кода, я все еще имею ту же проблему. Я, вероятно, пропустил что-то еще. – andrefrua

+0

Я думаю, что у вас может быть лучший способ получить категории. Дайте мне несколько минут. – hallaji

+1

Nevermind мой предыдущий комментарий. У меня также был & & оригинальный вызов функции. Я удалил его, и он работал как шарм. Большое спасибо за вашу помощь hallaji – andrefrua

Смежные вопросы