2009-11-27 2 views
0

Я пытаюсь найти более простой и простой способ закодировать логику.Если [Get Variable] равно [Array]

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

Например:

$someArray = array("a","b","c"); 
If($_GET["foobar"] == $someArray) { 
    return true; 
} else { 
    return false; 
} 

Если $ _GET [ "Foobar"] имела значение A, B, C или, в случае вернется верно. Если бы это были какие-то другие значения, он возвращал бы false.

Спасибо за помощь.

ответ

10
return in_array($_GET["foobar"], $someArray, true); 

EDIT: Добавлен дополнительный параметр true.

+2

Я бы установил третий параметр - необязательный параметр 'true' (если вы решили добавить пустые строки или 0 в' $ someArray'). См. Комментарии на странице документации по функциям: http://php.net/manual/en/function.in-array.php – soulmerge

+0

Хороший вопрос, я следил за вашим советом. –

2

Вы можете использовать функцию in_array(). Я почти уверен, что это именно то, что вы ищете. Вот функция в примере кода, который вы предоставили.

$someArray = array("a","b","c"); 
if(in_array($_GET["foobar"],$someArray)) { 
    return true; 
} else { 
    return false; 
} 
+2

если капитал 'If' legal? Выглядит странно. И вы должны просто вернуть 'in_array (...)', поскольку в любом случае это значение равно логическому. – mpen

+0

Это не мой код, возможно, OP намерен добавить дополнительные инструкции в фигурные скобки. – Sam152

+0

Это моя опечатка. Извините, если я добавлю какую-либо путаницу. – Anraiki

3

Вместо целочисленных индексированных массивов, вы можете использовать ассоциативные массивы:

$someArray = array('a' => 1, 'b' => 1, 'c' => 1); 
if (isset($someArray[$_GET['foobar']])) { 
    ... 
} 

Если вам не нравится, чтобы впечатать все значения массива или значение $ SomeArray должно остаться, как они , вы можете использовать array_flip:

$someArray = array('a', 'b', 'c'); 
... 
$otherArray = array_flip($someArray); 
if (isset($otherArray[$_GET['foobar']])) { 
    ... 
} 

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