У меня есть массив, я применил функцию 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);
}
Это только показывает «НЕТ» .. пожалуйста, помогите мне в этом …
Вам нужно сначала разыграть их всех, а затем искать. Как это:
$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';
}
Во-первых, ваш массив — это не массив строк, а массив объектов.
Если вы не можете изменить структуру массива, попробуйте это:
foreach ($your_array as $item) {
if (strval($item) == '25478') {
echo 'found!';
break;
}
}
Если вы можете изменить свой массив, добавьте в него элементы следующим образом:
$your_array[] = strval($appended_value);
После этого вы можете использовать in_array
,
in_array не рекурсивный, он ищет только на первом уровне.
и первый элемент вашего массива — это SimpleXMLElement Objects, а не числа.
Попробуйте ввести тип вашего массива: —
$array = (array) $yourarray;
if(in_array('285078',$arr))
{
echo 'yes';
}
else
{
echo "No";
}