У меня есть массив с именем $ 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 будет работать правильно.