2014-09-19 2 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"; 
    } 

Это массив, который я творю п рум файл XML ..

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

Это единственный показ 'НЕТ' .. Пожалуйста, помогите мне в этом ...

+1

Я думаю, что это происходит из-за «массива объектов». Может быть, потому, что он не работает. – Khushboo

+0

@Khushboo как я могу удалить этот объект из массива, есть ли какой-нибудь метод? – DeDevelopers

+1

У вас есть массив объектов. Прокрутите их и проверьте, находится ли в них значение. – Rimble

ответ

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

-1

Попробовать типажей вашу матрицу: -

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

Кастинг массива массива? Hmmmm –

+0

Я думаю, что еще не поиск –

+0

Не получится ли это придумать? – Khushboo

1

in_array не рекурсивный, он ищет только на первом уровне. и член первого уровня вашего массива - это объекты SimpleXMLElement, а не числа.

2

Во-первых, ваш массив не является массивом строк, это массив объектов. Если вы не можете изменить структуру массива попробовать это:

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

Если вы можете изменить свой массив, добавлять элементы к ней, как это:

$your_array[] = strval($appended_value); 

После этого вы можете использовать in_array.

Смежные вопросы