2014-09-19 87 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