2012-06-22 184 views
0

我似乎有問題檢查數組中是否存在字符串。對於我的問題可能有一個非常明顯的答案,原諒我,但我是PHP新手。無法從數組中獲得價值

反正這裏是我的代碼:

while($row = mysql_fetch_assoc($result)) 
{ 
    $result_array[] = $row; 
} 

if (in_array("496891", $result_array)) 
{ 
echo "true"; 
} 
else 
{ 
echo "false"; 
} 

數組是這樣的:

Array ([0] => Array ([ID] => 496891) [1] => Array ([ID] => 1177953)) 

我的代碼總是呼應假。任何人都知道我在做什麼錯了?

感謝

+2

in_array只檢查數組的「第一個」級別。你有一個多維的。 – OptimusCrime

回答

3

你有一個嵌套的數組,必須覈對每一個項目,像這樣:

function in_multidimensional_array($val, $array) { 
    foreach($array as $key => $value) { 
    if (in_array($val, $array[$key])) { 
     return true; 
    } 
    } 
    return false; 
} 

現在你可以檢查是否值496891存在使用:

if(in_multidimensional_array('496891', $result_array)) { 
    print 'true'; 
} else { 
    print 'false'; 
} 
+0

謝謝,效果很好 – RyanDreggs

0

你是搜索一個字符串,但你的數組是持有數值。您需要確保您將其專門插入爲字符串,以便在搜索之前返回true或將每個字段作爲字符串。

2

只有在MySQL循環中只有一行時,Krister的解決方案纔有效。這將檢查所有結果。

while($row = mysql_fetch_assoc($result)) 
{ 
    $result_array[] = $row; 
} 

$found = false; 
foreach ($result_array as $v) { 
    if (in_array("496891", $v)) { 
     $found = true; 
    } 
} 

if ($found == true) 
    echo 'true'; 
else 
    echo 'false';