In_array не работает

У меня есть массив, я применил функцию in_array, чтобы найти конкретное число в этом массиве, но он не показывает результат, данные находятся внутри массива, но нет ответа .. 🙁

Массив:

 Array
(
[0] => SimpleXMLElement Object
(
[0] => 572140
)

[1] => SimpleXMLElement Object
(
[0] => 533167
)

[2] => SimpleXMLElement Object
(
[0] => 572070
)

[3] => SimpleXMLElement Object
(
[0] => 572383
)

[4] => SimpleXMLElement Object
(
[0] => 285078
)

[5] => SimpleXMLElement Object
(
[0] => 430634
)
}

Код, который я использую:

 if(in_array('285078',$arr))
{
echo 'yes';
}
else
{
echo "No";
}

Это массив, который я создаю из XML-файла ..

 $arr = array();
foreach($xmlInjury as $data)
{
array_push($arr,$data->player_id);
}

Это только показывает «НЕТ» .. пожалуйста, помогите мне в этом …

1

Решение

Вам нужно сначала разыграть их всех, а затем искать. Как это:

$new_arr = array_map(function($piece){
return (string) $piece;
}, $arr);

// then use in array
if(in_array('285078', $new_arr)) {
echo 'exists';
} else {
echo 'does not exists';
}
11

Другие решения

Во-первых, ваш массив — это не массив строк, а массив объектов.
Если вы не можете изменить структуру массива, попробуйте это:

foreach ($your_array as $item) {
if (strval($item) == '25478') {
echo 'found!';
break;
}
}

Если вы можете изменить свой массив, добавьте в него элементы следующим образом:

$your_array[] = strval($appended_value);

После этого вы можете использовать in_array,

2

in_array не рекурсивный, он ищет только на первом уровне.
и первый элемент вашего массива — это SimpleXMLElement Objects, а не числа.

1

Попробуйте ввести тип вашего массива: —

$array =  (array) $yourarray;
if(in_array('285078',$arr))
{
echo 'yes';
}
else
{
echo "No";
}
-1
По вопросам рекламы [email protected]