Ассоциативный массив PHP, возвращенный из JSON

Я новичок в этом аспекте программирования и пытаюсь разобраться с ассоциативными массивами.

(в PHP)

После вызова API я получаю возвращенную строку JSON и превращаю ее в массив json_decode.

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

Array (
    [GBP-USD] => stdClass Object (
        [val] => 1.6649
    )
    [GBP-EUR] => stdClass Object (
        [val] => 1.2522
    )
    [GBP-CAD] => stdClass Object (
        [val] => 1.8236
    ) etc 

В основном код валюты в валюту и связанный с ним коэффициент конвертации.

Я пытаюсь выделить каждую валюту в код валюты и связанную с ней ставку, затем превратить ставку в поплавок с двумя десятичными знаками и отобразить список с кодом валюты и ставкой рядом; Я в порядке с последними двумя битами, но элемент массива, связанный с кодом валюты, не имеет связанного значения, его значение является объектом, поэтому как мне получить доступ к значению элемента «val» в массиве И связанному код валюты заодно?

Я пробовал этот подход (и около 100 других), но он падает, когда достигается $element['value'] , потому что значение является объектом:

while ($element = each($curr_data)){
    echo $element['key'].':' .$element['value']. '<br/>';
}

person Nick    schedule 20.08.2014    source источник
comment
К вашему сведению, если вы хотите ассоциативный массив с json_decode, укажите true в качестве второго аргумент.   -  person Marty    schedule 20.08.2014


Ответы (2)


У вас есть массив объектов, поэтому для доступа к свойству вы можете сделать это.

foreach ($curr_data as $key => $item){
    echo $key.':' .$item->val. '<br/>';
}
person David Jones    schedule 20.08.2014
comment
После установки объекта в качестве переменной $item должно ли имя его значения быть таким же, как в массиве, т.е. оно должно быть item->val? (Кавычки используются для выделения) - person Nick; 20.08.2014
comment
Да, val — это имя свойства объекта - person David Jones; 20.08.2014

Ознакомьтесь с документацией по PHP здесь PHP: json_decode

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

Если вы хотите декодировать JSON как ассоциативный массив, передайте true в качестве второго аргумента.

person Tomas Srna    schedule 20.08.2014