2009-11-27 79 views
0

我試圖找到更簡單易用的方法來編寫邏輯。如果[獲取變量]等於[數組]

這就是說,如果一個變量等於數組中的任何鍵值。

例如:

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

如果$ _GET [ 「foobar的」]有A,B或C的值,案件將返回true。如果它是任何其他值,它將返回false。

感謝您的幫助。

回答

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

編輯:添加可選true參數。

+2

我會進一步設置第三個 - 可選參數爲「true」(如果您決定添加空字符串或0到'$ someArray')。請參閱功能文檔頁面上的註釋:http://php.net/manual/en/function.in-array.php – soulmerge 2009-11-27 07:31:32

+0

好點的靈魂樂,我遵循了您的建議。 – 2009-11-27 07:35:47

2

您可以使用in_array()功能。我非常確定這正是你正在尋找的。這是您提供的代碼示例中的函數。

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

如果資本'If'合法嗎?看起來很奇怪。而且你應該只返回'in_array(...)',因爲無論如何這個評估結果都是布爾值。 – mpen 2009-11-27 07:44:57

+0

這不是我的代碼,也許OP打算在大括號內添加更多指令。 – Sam152 2009-11-27 08:34:17

+0

這是我的錯字。對不起,如果我添加任何混亂。 – Anraiki 2009-11-27 17:49:02

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']])) { 
    ... 
} 

你甚至可以存儲有用的信息在關聯數組的值。