2010-10-19 74 views
-1

如果我有這樣的代碼:搜索變量數組()

$result = 1; 

$square = array(

"00" => -1, 
"0" => 0, 
"1" => 1, 

); 

並想知道$結果是否等於任何$平方米的數組值(-1,0或1)。

我猜測應該有一個函數將一個變量與所有數組的值進行比較,並相應地修改TRUE或FALSE。

如果有isn't這樣的功能我願意接受你可能已經在你的袖子:)

由於隱藏任何建議和/或變通方法提前

回答

3

您正在尋找in_array()

$result = 1; 
$square = array("00" => -1, "0" => 0, "1" => 1,); 

if (in_array($result, $square)) { 
    echo "Found something!"; 
} 
+0

像魅力一樣工作。非常感謝你! – Trufa 2010-10-19 04:33:17

1

in_array應該爲你工作。

if(in_array($result, $square)) { 
    //$result is in there. 
} 
+0

試一試,謝謝! – Trufa 2010-10-19 04:23:08

+0

爲了記錄,對於大型數組,這個函數是超慢的。 – mattbasta 2010-10-19 04:25:00

+0

@mattbasta:有沒有其他的選擇? – zerkms 2010-10-19 04:26:35

0

if(array_search($result,$square)===false) { echo "DNE"; }

注意===

編輯:切換功能參數 - 對不起

+0

@meagar,他沒有使用'in_array'。 – 2010-10-19 04:26:40

+0

看起來像'in_array'雖然很簡短。 – Ben 2010-10-19 04:27:39

-1

有一個PHP函數,將做到這一點。它被稱爲array_search();爲了您上面的代碼,你會使用

if(false !== array_search($square, $result)){ 
echo "Found something"; 
} 

到文檔的鏈接,可以發現here。查看代碼示例的底部。

+1

如果返回[0]值,您需要與'==='比較以避免問題。 – Ben 2010-10-19 04:32:03

+0

示例包含嚴重缺陷,如果您搜索的元素的索引在強制爲bool時評估爲「false」,則將失敗。你必須使用'if(false!== array_search(...))'。 – meagar 2010-10-19 04:32:37

+0

感謝您的注意......我在上面的示例中修復了它 – Slruh 2010-10-19 12:47:52

1

如果你的陣列將是大(> 500元),你會想這樣做:

$flip_square = array_flip($square); 
return isset($flip_square["string_to_search_for"]); 

如果你不這樣做,也可以是死一般緩慢。這比in_array()快很多倍。

+1

使用'array_key_exists'而不是'isset',它將在奇怪的角落情況下返回false,其中您正在搜索的值最初存在於索引'null' 。 – meagar 2010-10-19 04:29:01

+0

只是一個FYI,如果OP計劃使用這個..它不會工作,如果任何值是(或將永遠)任何東西,但整數或字符串。 – 2010-10-19 04:30:39

+0

@David Titarenco:確切地說:除了'scalar'之外的任何東西# – zerkms 2010-10-19 04:32:11