PHP in_array не находит значение, которое есть

У меня есть массив с именем $ friend_array. Когда я печатаю_r ($ friend_array), он выглядит так:

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

У меня также есть переменная с именем $ uid, которая извлекается из URL-адреса.

На странице, которую я тестирую, $ uid имеет значение 3, поэтому оно находится в массиве.

Однако следующее говорит, что его нет:

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

Это всегда возвращает false. Я повторяю $ uid, и я 3. Я печатаю массив и 3 есть.

Что я делаю не так? Любая помощь будет принята с благодарностью!

Array ( [0] => 3,2,5 ) означает, что элемент массива 0 является строкой 3,2,5 , поэтому перед выполнением проверки is_array для $uid чтобы вы сначала is_array эту строку в массив, используя в качестве разделителя, а затем проверить на $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; } 

Рабочий пример

Вывод

 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'; 

Похоже, что ваш $ friend_array настроен неправильно. Каждое значение 3, 2 и 5 нуждается в собственном ключе в массиве для работы in_array.

Пример:

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

Вышеуказанный оператор if будет работать правильно.