php, как получить данные из многомерного массива? - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть массив, который выглядит следующим образом:

foreach($obj as $key => $value)
{
print_r ($obj);
}

Array
(
[id] => 24991526504444
[name] => 21test
[picture] => http://profile.ak.fbcdn.net/hprofile-ak-sn4/276505_2499152255_s.jpg
[link] => http://apps.facebook.com/test/vote=6189373
[likes] => 1
[category] => Website
[parking] => Array
    (
        [street] => 0
        [lot] => 0
        [valet] => 0
    )

[payment_options] => Array
    (
        [cash_only] => 0
        [visa] => 0
        [amex] => 0
        [mastercard] => 0
        [discover] => 0
    )
)

как я могу получить данные из этого массива, например id или likes.

я пробовал echo $key['likes'] или echo $key[$value['likes']] и еще несколько комбинаций, и это не работает

есть идеи?спасибо

Ответы [ 4 ]

2 голосов
/ 13 сентября 2011

$key это не ваш массив, $obj это ваш массив.Вы должны использовать $obj['likes'] или $obj['parking']['street'].Вам не нужно перечислять ключи для доступа к ключам / значениям внутри объекта, просто используйте $obj.

Кроме того, ваш foreach не имеет смысла:

foreach($obj as $key => $value)
{
    print_r ($obj);
}

Это гласит «Для каждого ключа в массиве выведите весь массив».Вам не нужно делать циклы вообще, единственная цель print_r состоит в том, чтобы рекурсивно вывести содержимое массива для вас без зацикливания.Просто используйте

print_r($obj);
1 голос
/ 13 сентября 2011

Вы используете foreach, это означает, что вы перебираете элементы массива, вы должны использовать

    $obj['likes']

должно вернуть значение в массиве (1 в вашем случае).

А для многомерных

    $obj['payment_options']['cash_only']

должно вернуть значение (0 в вашем случае)

1 голос
/ 13 сентября 2011

Согласно этому:

foreach($obj as $key => $value)
{
print_r ($obj);
}

массив, который вы отобразили, фактически является полной структурой $obj, а не какой-либо из его пар ключ => значение.

Так что вам просто нужно:

echo $obj['likes'];
echo $obj['id'];
1 голос
/ 13 сентября 2011

Пожалуйста, прочитайте руководство по массивам .

Вам не нужен цикл для доступа к массиву. То, что вы хотите, можно сделать просто с помощью
$obj['id'] или $obj['likes'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...