2013-05-07 5 views
5

У меня есть массив, как показано ниже (массив 1), и мне нужно удалить stdClass из него, как в следующем массиве no. 2. В настоящее время я делаю это с использованием цикла foreach, есть ли лучший способ сделать это без петлирования?Удалить объекты stdClass из массива

Массив no.1

array(3) { 
    [0] => object(stdClass)#169 (4) { 
    ["id"] => string(2) "59" 
    ["name"] => string(13) "test" 
    ["email"] => string(21) "[email protected]" 
    ["telephone"] => string(20) "898998989" 
    } 
    [1] => object(stdClass)#190 (4) { 
    ["id"] => string(2) "58" 
    ["name"] => string(13) "test" 
    ["email"] => string(21) "[email protected]" 
    ["telephone"] => string(8) "71877858" 
    } 
    [2] => object(stdClass)#193 (4) { 
    ["id"] => string(2) "34" 
    ["name"] => string(9) "test" 
    ["email"] => string(22) "[email protected]" 
    ["telephone"] => string(13) "3189028092139" 
    } 
} 

Массив № 2

array(3) { 
    [0] => array(4) { 
    ["id"] => string(2) "62" 
    ["name"] => string(5) "test" 
    ["email"] => string(22) "[email protected]" 
    ["telephone"] => string(10) "898998989" 
    } 
    [1] => array(4) { 
    ["id"] => string(2) "59" 
    ["name"] => string(13) "test" 
    ["email"] => string(21) "[email protected]" 
    ["telephone"] => string(20) "71877858" 
    } 
    [2] => array(4) { 
    ["id"] => string(2) "58" 
    ["name"] => string(13) "test" 
    ["email"] => string(21) "[email protected]" 
    ["telephone"] => string(8) "3189028092139" 
    } 
} 

Это то, что я делаю (литье)

foreach($moderationContacts as $contact) 
{ 
    $contacts[] = (array)$contact; 
} 
+0

Зачем вы хотите удалить его? – Bananam00n

+0

Вы не можете манипулировать массивами без циклов. Любому решению потребуется некоторая форма неявного цикла. – deceze

+0

@ Bananam00n - Мне нужно создать объект JSON из него с помощью json_encode – Shaolin

ответ

7

попробовать

$array = json_decode(json_encode($array), true); 

EDIT: Я проверил это дело, и она работает:

$stdClass= new stdClass(); 
$stdClass->test = "foo"; 
$array = Array(
    "a" => Array("b","c"), 
    "d" => $stdClass 
); 

$array = json_decode(json_encode($array), true); 

var_dump($array); 

OUTPUT

array 
    'a' => 
    array 
     0 => string 'b' (length=1) 
     1 => string 'c' (length=1) 
    'd' => 
    array 
     'test' => string 'foo' (length=3) 
2

Вы можете попробовать

$array = array_map(function ($v) { 
    return (array) $v ; // convert to array 
}, $array); 

Или, если эти данные от json использования

$array = json_decode($data,true); 
Смежные вопросы