PHP: вернуть часть if () {} - PullRequest
       11

PHP: вернуть часть if () {}

0 голосов
/ 19 сентября 2008

Допустим, у меня есть этот код:

if (md5($_POST[$foo['bar']]) == $somemd5) {
  doSomethingWith(md5($_POST[$foo['bar']]);
}

Я мог бы сократить это, выполнив:

$value = md5($_POST[$foo['bar']];
if ($value == $somemd5) {
  doSomethingWith($value);
}

Но есть ли заранее заданная переменная, которая содержит первое или второе условие тока if? Как например:

if (md5($_POST[$foo['bar']]) == $somemd5) {
  doSomethingWith($if1);
}

Может быть, это ненужный способ сделать это, но мне просто интересно.

Ответы [ 3 ]

7 голосов
/ 19 сентября 2008

Нет, но поскольку само присваивание является выражением, вы можете использовать присваивание в качестве условного выражения для оператора if.

if (($value = md5(..)) == $somemd5) { ... }

В общем, вы должны избегать встраивания присваиваний в условные выражения:

  • Код является более плотным и, следовательно, более трудным для чтения, с большим количеством вложенных скобок.
  • Смешивание = и == в одном и том же выражении просто просит их перепутать.
1 голос
/ 19 сентября 2008

ИМХО, твой 2-й пример (приведенный ниже, если кто-то редактирует вопрос) просто в порядке Вы можете скрыть код с помощью некоторых хитростей, но для меня это лучше. В более сложных случаях этот совет может не применяться.

$ value = md5 ($ _ POST [foo ['bar']];

if ($ value) == $ somemd5) {

 doSomethingWith($value);

}

1 голос
/ 19 сентября 2008

Поскольку if просто использует результат выражения, вы не можете получить доступ к его частям. Просто сохраните результаты функций в переменной, как вы написали во втором фрагменте.

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