Преобразование массива и объектов в массив в чистый массив

Мой массив похож:

Array ( [0] => stdClass Object ( [id] => 1 [name] => demo1 ) [1] => stdClass Object ( [id] => 2 [name] => demo2 ) [2] => stdClass Object ( [id] => 6 [name] => otherdemo ) ) 

Как преобразовать весь массив (включая объекты) в чистый многомерный массив?

Solutions Collecting From Web of "Преобразование массива и объектов в массив в чистый массив"

Вы пробовали приведение типов?

 $array = (array) $object; 

На самом деле есть еще один трюк

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

См. json_encode в руководстве по PHP, второй параметр называется assoc :

ассоциативный

Когда TRUE , возвращенные объекты будут преобразованы в ассоциативные массивы.

Это именно то, что вы ищете.

Вы также можете попробовать это: Преобразовать объект в массив с помощью PHP (phpro.org)

Вы можете использовать array_walk для преобразования каждого элемента из объекта в массив:

 function convert(&$item , $key) { $item = (array) $item ; } array_walk($array, 'convert'); 

Вы должны бросить все объекты, что-то вроде:

 $result = array(); foreach ($array as $object) { $result[] = (array) $object } 

Поскольку вы используете ООП, самым простым методом было бы заставить код преобразовать себя в массив к самому классу, тогда вы просто вызываете этот метод и имеете возвращаемый массив, заполняющий исходный массив.

 class MyObject { private $myVar; private $myInt; public function getVarsAsArray() { // Return the objects variables in any structure you need return array($this->myVar,$this->myInt); } public function getAnonVars() { // If you don't know the variables return get_object_vars($this); } } 

См. http://www.php.net/manual/en/function.get-object-vars.php для получения информации о get_object_vars()

Просто используйте это:

 json_decode(json_encode($yourArray), true); 

Предполагая, что вы хотите получить этот формат чистого массива:

 Array ( [1] => "demo1", [2] => "demo2", [6] => "otherdemo", ) 

Тогда я бы сделал:

 $result = array(); foreach ($array as $object) { $result[$object->id] = $object->name } 

(edit) На самом деле это то, что я искал, возможно, не то, что искали OP. Может быть полезным для других поисковиков.