Могу ли я определить переменную в PHP, если условие? - PullRequest
29 голосов
/ 19 июля 2011

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

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

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

Ответы [ 4 ]

49 голосов
/ 19 июля 2011

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

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

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, то есть falsey .

CodePad .

<?php

function wp_get_category($id) {
}

if ($my_array = wp_get_category($id)) {
    echo $my_array;
} else {
    echo "1234";
}
4 голосов
/ 19 июля 2011

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

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

}

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

4 голосов
/ 19 июля 2011

вы можете захотеть что-то вроде этого:

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

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

2 голосов
/ 03 февраля 2015

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

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

http://codepad.org/xTwzTwGR

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...