In_array无法正常工作

时间:2014-09-19 09:48:05

标签: php arrays xml simplexml

我有一个数组,我应用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' ..请帮助我...

4 个答案:

答案 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";
    }