Лучший способ использовать массив, который возвращается из функции сразу в PHP


У меня есть функция, которая возвращает массив, и я хочу проверить, что определенное значение в массиве.

function testFunction() {
    return array('key' => 404)
}

if (testFunction()['key'] < 404) {
    // stay calm and carry on
}
else {
    // uh oh
}

Я понимаю, что выше не будет работать на PHP 5.3 (или ниже), тем не менее, я хотел бы знать, что я должен делать в этом случае. Что - то, что я должен вызвать временный массив я создаю для оператора if? Или есть другой способ справиться с этой ситуацией?

Вот что я примерно сейчас:

function testFunction() {
    return array('key' => 404)
}

$test_array = testFunction();

if ($test_array['key'] < 404) {
    // stay calm and carry on
}
else {
    // uh oh
}

Это приемлемая вещь, чтобы сделать?



246
1
php
задан 3 марта 2011 в 01:03 Источник Поделиться
Комментарии
2 ответа

Итак, .. вы хотите просто проверить, есть ли ключ в массиве задано определенное значение.

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

Единственный оставшийся вопрос-как все это назвать. Учитывая, что переменная, вероятно, будет расположен в очень малом объеме, не беспокойтесь слишком много об этом. Существует поговорка, которая говорит, Чем больше масштаб, тем больше имя. Вы могли бы просто назвать его $список.

Старый отвечает:


Ваш код делает что-то другое, как то, что
вы описываете? Если вы хотите увидеть
является ли данное значение присутствует в
массива, использовать in_array().

Обновление:

Мне кажется, я понимаю, что вы
пытаетесь сделать сейчас. Вы просто
хотите ли ключ установлен?

array_key_exists()

У PHP есть очень хороший онлайн АПИ
будьте уверены, чтобы проверить его на существующий
реализаций при поиске
решение.

3
ответ дан 3 марта 2011 в 02:03 Источник Поделиться

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

$result = testFunction();
if (!isset($result['key']) || $result['key'] < 404) {
// ok
}
else {
// panic
}

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

function omgWeGotTheDreaded404() {
$result = testFunction();
return isset($result['key'] && $result['key'] >= 404;
}

...

if (omgWeGotTheDreaded404()) ...

1
ответ дан 3 марта 2011 в 02:03 Источник Поделиться