Как получить доступ к свойству элемента/элемента массива объекта (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'];

5 ответов


для доступа к элементу массива можно использовать $array['KEY'];

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

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

вы также можете зацикливаться на массиве объектов, таких как:

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

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

Update (это может помочь кому-то лучше понять):

массив содержит 'key' и ''. Предоставление ключа для элемента массива необязательна и в этом случае ему автоматически присваивается числовой ключ, который начинается с 0 и увеличиваться на 1 для каждого дополнительного члена. Мы можем получить 'value' из массива по it's'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'

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

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

попробуйте это:

echo $array[0]->id;

у вас есть массив. Массив 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);
}

Как насчет чего-то вроде этого.

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 );

ссылка