我有一个数组,我应用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);
}
它只显示' NO' ..请帮助我...
答案 0 :(得分:11)
您需要先将它们全部投射,然后搜索。像这样:
$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';
}
答案 1 :(得分:2)
首先,您的数组不是字符串数组,而是数组对象。 如果你不能改变数组的结构,试试这个:
foreach ($your_array as $item) {
if (strval($item) == '25478') {
echo 'found!';
break;
}
}
如果您可以更改阵列,请像这样添加项目:
$your_array[] = strval($appended_value);
之后,您可以使用in_array
。
答案 2 :(得分:1)
in_array不是递归的,它只在第一级搜索。 并且您的数组的第一级成员是SimpleXMLElement对象,而不是数字。
答案 3 :(得分:-1)
尝试对数组进行类型转换: -
$array = (array) $yourarray;
if(in_array('285078',$arr))
{
echo 'yes';
}
else
{
echo "No";
}