Подтвердить что ты не робот

Как получить доступ к объекту объекта (элемента stdClass Object) элемента/элемента массива?

Выполняя print_r() в моем массиве, я получаю следующее:

Array ( 
    [0] => 
        stdClass Object 
        ( 
            [id] => 25 
            [time] => 2014-01-16 16:35:17 
            [fname] => 4 
            [text] => 5 
            [url] => 6 
        ) 
)

Как я могу получить доступ к определенному значению в массиве? Следующий код не работает из-за объекта stdClass

echo $array['id'];
4b9b3361

Ответ 1

Чтобы получить доступ к элементу массива, вы используете $array['KEY'];

Чтобы получить доступ к члену объекта, вы используете $obj->KEY;

Чтобы получить доступ к члену объекта внутри массива объектов:
$array[0]//Получить первый объект в массиве
$array[0]->KEY//затем получить доступ к своему ключу

Вы также можете перебрать массив таких объектов:

foreach ($arrayOfObjs as $key => $object) {
    echo $object->object_property;
}

Вспомните массив как совокупность вещей. Это мешок, в котором вы можете хранить свои вещи и давать им уникальный идентификатор (ключ) и получать к ним доступ (или вынимать вещи из сумки) с помощью этого ключа. Я хочу, чтобы все было просто, но этот мешок может содержать и другие сумки:)

Обновление (это может помочь кому-то лучше понять):

В массиве содержатся пары "key" и "value". Предоставление ключа для элемента массива необязательно, и в этом случае ему автоматически присваивается числовой ключ, который начинается с 0 и продолжает увеличиваться на 1 для каждого дополнительного члена. Мы можем получить "значение" из массива "key".

Таким образом, мы можем определить массив следующими способами (относительно ключей):

Первый метод:

$colorPallete = ['red', 'blue', 'green'];

Вышеуказанный массив будет автоматически назначаться числовыми клавишами. Таким образом, ключ, назначенный на красный, будет 0, для синего 1 и т.д.

Получение значений из указанного массива:

$colorPallete[0]; // will output 'red'
$colorPallete[1]; // will output 'blue'
$colorPallete[2]; // will output 'green'

Второй метод:

$colorPallete = ['love' => 'red', 'trust' => 'blue', 'envy' => 'green']; // we expliicitely define the keys ourself.

Получение значений из указанного массива:

$colorPallete['love']; // will output 'red'
$colorPallete['trust']; // will output 'blue'
$colorPallete['envy']; // will output 'green'

Ответ 2

Попробуйте это, работая нормально -

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

Ответ 3

Попробуйте следующее:

echo $array[0]->id;

Ответ 4

У вас есть массив. Массив PHP в основном представляет собой "список вещей". В вашем массиве есть одна вещь. Эта вещь - стандартный класс. Вам нужно либо удалить вещь из своего массива

$object = array_shift($array);
var_dump($object->id);

Или ссылайтесь на вещь по ее индексу в массиве.

var_dump( $array[0]->id );

Или, если вы не знаете, сколько всего в массиве, перейдем к массиву

foreach($array as $key=>$value)
{
    var_dump($value->id);
    var_dump($array[$key]->id);
}

Ответ 5

Как насчет чего-то подобного.

function objectToArray( $object ){
   if( !is_object( $object ) && !is_array( $object ) ){
    return $object;
 }
if( is_object( $object ) ){
    $object = get_object_vars( $object );
}
    return array_map( 'objectToArray', $object );
}

и вызовите эту функцию с помощью объекта

$array = objectToArray( $yourObject );

ссылка