2011-08-06 54 views
1

我有一個名爲$ friend_array的數組。當我的print_r($ friend_array)它看起來像這樣:PHP in_array沒有找到存在的值

Array ([0] => 3,2,5) 

我也有正在從URL拉到一個變量名爲$ UID。

在我測試的頁面上,$ uid的值爲3,因此它在數組中。

但是,以下是說,它不存在:

if(in_array($uid, $friend_array)){ 
    $is_friend = true; 
}else{ 
    $is_friend = false; 

這始終返回false。我回應$ uid,它是3.我打印數組,3在那裏。

我在做什麼錯?任何幫助將不勝感激!

+0

如果您嘗試in_array會發生什麼($ UID,$ friend_array [0]) – Drewdin

+0

值得一提:'$ is_friend = in_array($ UID,$ friend_array )'更具可讀性並且_exactly_相同。 – KingCrunch

+0

這些值來自SQL。我有一個名爲「friend_array」的字段,它包含逗號分隔的值列表。我需要在我的while循環中做一個foreach嗎?我對數組很糟糕。 – Dex

回答

3

Array ([0] => 3,2,5)手段數組元素0是字符串3,2,5,因此,在執行is_array之前檢查$uid,因此必須首先使用,將該字符串拆分爲數組分離,然後再檢查$uid

// $friend_array contains as its first element a string that 
// you want to make into the "real" friend array: 
$friend_array = explode(',', $friend_array[0]); 

if(in_array($uid, $friend_array)){ 
    $is_friend = true; 
}else{ 
    $is_friend = false; 
} 

Working example

+0

Blam!謝謝你,先生!你已經解決了我的問題! – Dex

+0

@Dex - 不客氣! –

0

看起來像你的$ friend_array設置錯誤。每個值爲3,2和5的數組都需要自己的鍵,以便in_array工作。

例子:

$friend_array[] = 3; 
$friend_array[] = 2; 
$firned_array[] = 5; 

你上面的if語句然後將正常工作。

輸出的
4

Array ([0] => 3,2,5) 

...如果陣列是由像這樣創造將產生:

$friend_array = array(); 
array_push($friend_array, '3,2,5'); 
print_r($friend_array); 

根據你的問題,我不認爲這是你意味着要做。

如果你想三個值添加到陣列中的前三個指標,做到以下幾點:

$friend_array = array(); 
array_push($friend_array, '3'); 
array_push($friend_array, '2'); 
array_push($friend_array, '5'); 

,或作爲簡寫array_push():

$friend_array = array(); 
$friend_array[] = '3'; 
$friend_array[] = '2'; 
$friend_array[] = '5'; 
+0

這真的很有幫助......我想我需要閱讀更多關於數組的知識,看看是否有更高效的方法來實現這一點。感謝您的答覆! – Dex