2015-03-18 2 views
0

В настоящее время я работаю над проектом, где последователи пользователя приведены мне в массиве, который выглядит как один здесь: http://pastebin.com/304iPm4LКак доступ к вложенным Массивам: Невозможно использовать объект типа StdClass как массив

Массив:

object(stdClass)#2 (3) { 
["pagination"]=> object(stdClass)#3 (2) 
    { 
    ["next_url"]=> string(146) "DATA" 
    ["next_cursor"]=> string(13) "DATA" 
    } 
["meta"]=> object(stdClass)#4 (1) 
    { 
    ["code"]=> int(200) 
    } 
["data"]=> array(9) 
    { 
    [0]=> object(stdClass)#5 (4) 
     { 
     ["username"]=> string(7) "twurked" 
     ["profile_picture"]=> string(106) "https://igcdn-photos-g-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11055444_697242820403478_108851570_a.jpg" 
     ["id"]=> string(9) "307611076" 
     ["full_name"]=> string(20) "#twurked For Reposts" 
     } 
    [1]=> object(stdClass)#6 (4) 
     { 
     ["username"]=> string(12) "itsmarziapie" 
     ["profile_picture"]=> string(107) "https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/10735354_634448103338889_1219780551_a.jpg" 
     ["id"]=> string(9) "415505158" 
     ["full_name"]=> string(15) "Marzia Bisognin" 
     } 
    [2]=> object(stdClass)#7 (4) 
     { 
     ["username"]=> string(11) "briankgrubb" 
     ["profile_picture"]=> string(107) "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xpa1/t51.2885-19/10518270_1508565329429347_713909002_a.jpg" 
     ["id"]=> string(8) "28307611" 
     ["full_name"]=> string(11) "Brian Grubb" 
     } 
    [3]=> object(stdClass)#8 (4) 
     { 
     ["username"]=> string(16) "redbulladventure" 
     ["profile_picture"]=> string(106) "https://igcdn-photos-d-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11007825_728249480627075_348216069_a.jpg" 
     ["id"]=> string(10) "1721797894" 
     ["full_name"]=> string(18) "Red Bull Adventure" 
     } 
    } 
} 

То, что я пытаюсь сделать, это принять значение username каждого из этих пользователей и вывести его на экран.

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

Я использовал этот код:

$i = 1; 
while ($i <= 10) { 
    $instagram->getUserFollows('self',10)->data[$i]["username"]; 
    echo "<br/>"; 
    $i++; 
} 

$instagram->getUserFollows('self',10) массив, является то, что вы видели в Pastebin. Посмотрев на мои вложенные массивы, мне показалось, что мне нужен номер, а затем ["username"], чтобы получить доступ к каждому имени пользователя.

В теории, $instagram->getUserFollows('self',10)->data["1"]["username"]; должен вывести itsmarziapie

Однако, когда я запускал код выше, я получил это:

Cannot use object of type stdClass as array

Что означает эта ошибка, и почему я не могу цикл из мои username данные на экран ???

На данный момент я занимаюсь поиском и устранением неисправностей около 2,5 часов, и теперь я смотрю на вас, ребята, для руководства. Я знаю, что есть много вопросов об одной и той же ошибке, но ни один из них не включал вложенные массивы, подобные этой, поэтому я немного потерялся.

Спасибо за помощь, чтобы указать меня в правильном направлении :)

+2

Извините за очевидным, но это означает, что именно он говорит: вы не можете использовать объект введите 'stdClass' как массив. Используйте 'var_dump()' для проверки ** фактического ** содержимого ваших переменных. – zerkms

+0

@zerkms Я это понимаю, но для меня решение ошибки было очень запутанным. Я понятия не имел, как получить доступ к данным массива в вложенных массивах. Я понял проблему, но недостаточно хорошо, чтобы найти решение самостоятельно. – pattyd

+0

Ну, если вы использовали 'var_dump', вы бы знали, что они не * вложенные массивы *. Но угадание действительно смешнее. – zerkms

ответ

2

Вы можете использовать это:

//You request 10 objects but you don't know if there are really 10 
    $info = $instagram->getUserFollows('self',10); 

//How many objects? 
    $qty = count($info->data); 

/* You can't assume that there are 10 objects (I refer to your code, 
* you have 9 objects and you try to access to 10 objects)  
*/ 
    for($i = 0; $i < $qty ; $i++) { 
     echo $info->data[$i]->username . "<br>"; 
    } 
+0

Отлично! Отлично работает, спасибо! – pattyd

+0

добро пожаловать ;-) –

Смежные вопросы