使用PHP如何读取解码后的JSON数组?

3

我有以下数组,但不知道如何从中获取任何值,这是该数组:

Array
(
    [0] => stdClass Object
        (
            [aure] => test
            [menu] => stdClass Object
                (
                    [pizza] => stdClass Object
                        (
                            [Tomato & Cheese] => stdClass Object
                                (
                                    [small] => 5.50
                                    [large] => 9.75
                                )

                            [onion] => stdClass Object
                                (
                                    [small] => 5.50
                                    [large] => 9.75
                                )

                        )

                    [Special Dinners] => stdClass Object
                        (
                            [Chicken Wings Dinner] => stdClass Object
                                (
                                    [price] => 15.80
                                )

                            [onion] => stdClass Object
                                (
                                    [small] => 5.50
                                    [large] => 9.75
                                )

                        )

                )

        )

)

您能否给我举个例子,说明如何获得小型番茄芝士披萨的价格呢?

2个回答

4
$array[0]->menu->pizza->{"Tomato & Cheese"}->small;

我使用花括号,因为没有它们我无法得到 "Tomato & Cheese"(它们之间有空格)

这将给你所有的比萨饼

$pizzas = (array) $array[0]->menu->pizza;
foreach($pizzas as $pizzaname => $choices){
    echo $pizzaname." (small) is for ".$choices->small."<br />";
    echo $pizzaname." (large) is for ".$choices->large."<br />";
}

该死,看起来很容易 :),谢谢,有没有一种方法可以在不知道披萨名称的情况下完成它? - aurel
感谢@genesis,虽然最后一段代码,即foreach循环没有显示任何东西。 - aurel
иҝҷжҳҜжӮЁзҡ„$pizzasж•°з»„зҡ„з»“жһңпјҡArrayпјҲ[TomatoпјҶCheese] => stdClass ObjectпјҲ[small] => 5.50 [large] => 9.75пјү[onion] => stdClass ObjectпјҲ[small] => 5.50 [large] => 9.75пјүпјү - aurel
@aurel:已编辑。对于回复晚了,我表示歉意。 - genesis

1

如果您的名称不仅仅是字母数字组合,请考虑将json_decodeassoc参数设置为true,以获取嵌套字典而不是对象。

但是,您仍然可以使用以下语法访问奇怪的成员名称:

echo 'Large t&c: ' . jsonArray[0]->menu->pizza->{'Tomato & Cheese'}->large;

我需要查看一下"assoc",因为我不知道那是什么。有没有一种方法可以在不知道"menu"和"pizza"名称的情况下获得相同的结果? - aurel
@aurel 是的。将 assoc 设置为 true 允许您使用所有数组函数,您可以简单地在其中迭代,例如在嵌套的 for 循环中。 - phihag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接