2014-09-19 112 views
1

我有一个数组,我施加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"; 
    } 

这是我创建F中的阵ROM中的xml文件..

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

这只是显示 'NO' ..请帮助我在这...

+1

我认为这是因为“对象数组”之间进来。可能是因为它不起作用。 – Khushboo 2014-09-19 09:49:43

+0

@Khushboo我如何从数组中删除该对象,是否有任何方法? – DeDevelopers 2014-09-19 09:50:43

+1

您有一组对象。循环浏览它们并检查您的值是否在其中。 – Rimble 2014-09-19 09:51:14

回答

9

您需要先将它们全部施放,然后搜索。像这样:

$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'; 
} 
+0

@DeDevelopers肯定好友很高兴这个帮助 – Ghost 2014-09-19 10:03:23

-1

尝试类型转换你的阵列: -

$array = (array) $yourarray; 
if(in_array('285078',$arr)) 
    { 
     echo 'yes'; 
    } 
    else 
    { 
     echo "No"; 
    } 
+0

将数组投射到数组?嗯 – 2014-09-19 09:52:10

+0

我认为还没有搜索 – 2014-09-19 09:52:52

+0

它不会得到类型转换吗? – Khushboo 2014-09-19 09:54:15

1

in_array不递归的,它只在第一级搜索。 和你数组的第一级成员是SimpleXMLElement对象,而不是数字。

2

首先,你的数组不是数组的字符串,它是对象的数组。 如果你不能改变阵列的结构试试这个:

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

如果你可以改变你的阵列,将项目添加到它:

$your_array[] = strval($appended_value); 

后,您可以使用in_array