Могу ли я определить переменную в условии PHP if?

Например, могу ли я сделать:

if ($my_array = wp_get_category($id)) { echo "asdf"; } else { echo "1234"; } 

Если ничего не возвращается функцией, я хочу перейти в инструкцию else.

Да, это сработает, и шаблон используется довольно часто.

Если $my_array присваивается правдивое значение, то условие wil должно быть выполнено.

CodePad .

 <?php function wp_get_category($id) { return 'I am truthy!'; } if ($my_array = wp_get_category($id)) { echo $my_array; } else { echo "1234"; } 

Обратное также верно …

Если ничего не возвращается функцией, я хочу перейти в инструкцию else.

Функция, которая ничего не возвращает, вернет NULL , что является ложным .

CodePad .

 <?php function wp_get_category($id) { } if ($my_array = wp_get_category($id)) { echo $my_array; } else { echo "1234"; } 

вам может понадобиться что-то вроде этого:

 if (!is_null($my_array = wp_get_category($id)) { echo "asdf"; else echo "1234"; 

Предполагая, что функция возвращает null при ошибке. Возможно, вам придется немного подкорректировать его.

Это на самом деле общий шаблон и будет работать. Однако вы можете подумать дважды об использовании его для более сложных случаев или вообще. Представьте, если кто-то, поддерживающий ваш код, появится и увидит

 if ($x = one() || $y = two() && $z = three() or four()) { } 

Возможно, было бы лучше объявить переменные перед их использованием в условном выражении.

Я обнаружил, что это задается вопросом о правилах объявления переменной, а затем сразу же использовать ее в последующих условиях в одном и том же выражении.

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

http://codepad.org/xTwzTwGR