Не могу перевести stdClass Object в array

Рейтинг: 1Ответов: 2Опубликовано: 28.03.2015

Дано:

$array = 'Array
(
[0] => stdClass Object
    (
        [did] => 123
        [owner_id] => 123123
        [title] => By
        [size] => 2061840
        [ext] => gif
        [url] => http://vk.com/
        [thumb] => http://cs610521.vk.me
        [thumb_s] => http://cs610521.vk
    )

)';

Нужно перевести это чудо в обычный массив. Ничего не получается. Пробовал так, ничего не выходит:

print_r($array[0]->did);

Ответы

▲ 4Принят

В этой строке Вы объявляете СТРОКУ:

$array = 'Array
(
[0] => stdClass Object
    (
        [did] => 123
        [owner_id] => 123123
        [title] => By
        [size] => 2061840
        [ext] => gif
        [url] => http://vk.com/
        [thumb] => http://cs610521.vk.me
        [thumb_s] => http://cs610521.vk
    )

)';

Хотите объект, делайте что-то типа этого:

$obj = new stdClass();
$obj->did = 123;
$obj->title = 'asd';

Хотите, чтобы он был в массиве -

$array = [$obj, $obj1, $obj2];

тогда и

print_r($array[0]->did);

будет работать.

upd

Вы утверждаете что работаете с vk api, так вот, он отдает валидный json\xml. Пример работы с json

$array = json_decode($apiResponse); // $apiResponse - ответ сервера вк в формате json
$array[0]->did // именно то, что вы хотели получить!

А если Вы сделаете

var_dump ($array);

ps изучите документацию. var_dump() print_r()

То получите именно ту самую строку из вопроса.

▲ 2
$data  = '[{"xx":"1"}]';  
$array = json_decode($data,true);  
print_r($array);

result :

Array
(
    [0] => Array
        (
            [xx] => 1
        )

)