Мой массив похож:
Array ( [0] => stdClass Object ( [id] => 1 [name] => demo1 ) [1] => stdClass Object ( [id] => 2 [name] => demo2 ) [2] => stdClass Object ( [id] => 6 [name] => otherdemo ) )
Как преобразовать весь массив (включая объекты) в чистый многомерный массив?
Вы пробовали приведение типов?
$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. Может быть полезным для других поисковиков.