2017-02-14 17 views
0

Я пытаюсь использовать следующую функцию в PHP, чтобы повторить переменную, если она уже была установлена ​​или эхом альтернативного текста:Зачем переходить по refrance делает уведомление в php?

function _echo(&$var, $alt = ''){ 
    if (isset($var)){ 
     echo $var; 
    } else { 
     echo $alt; 
    } 
} 

И следующий код для вызова функции. Обратите внимание, что $ план не определен до:

<input type="text" name="test" value="<?= _echo($plan['program']) ?>"> 

Но это вызывает:

Примечание: Undefined индекс: программы в [файл] в строке [строка]

Я попробовал следующий код, чтобы выяснить проблему, и это было неожиданно, $ plan был определен при вызове функции:

var_dump($plan); 
<input type="text" name="test" value="<?= _echo($plan['test']) ?>"> 
var_dump($plan); 

И выход был:

Примечание: Undefined переменной: план в [файл] в строке [строка] Примечание:

Undefined индекс: программа [файл] в строке [строка] >> Здесь NULL вторил

{[ "программа"] => NULL}

в чем проблема именно и как я могу сделать такую ​​функцию

массив (1)?

+1

Возможный дубликат [PHP: "Notice: Undefined переменной", "Обратите внимание: Undefined индекс" и "Извещение: Undefined смещение"] (http://stackoverflow.com/ Вопросы/4261133/php-notice-undefined-variable-notice-undefined-index-and-notice-undef) –

ответ

1

Проблема заключается не в передаче аргумента по ссылке, а в ссылке на индекс массива, который не существует или переменная, которая не существует. Вы должны использовать isset():

<input type="text" name="test" 
value="<?= _echo(isset($plan['program']) ? $plan['program']: '') ?>"> 
+0

Ну нет ли какой-либо метод для реализации такой проверки в самой функции? – asDca21

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

  • Нет связанных вопросов^_^