【问题标题】:after json in php i get stdClass and cannot use array在php中的json之后我得到stdClass并且不能使用数组
【发布时间】:2013-04-04 08:23:31
【问题描述】:

我在 jquery 中使用 JSON.stringify(pageSettings) 将数组 ajax 到 php 并保存文件。文件内容:

{"MidHeight":367,"BotTop":502}

我使用 json_decode 将其加载回 php 中的数组:

$pageSettings=json_decode(file_get_contents($path.$file);

当我 print_r($pageSettings,true) 结果是:

stdClass Object
(
    [MidHeight] => 276
    [BotTop] => 411
)

但是当我尝试从中读取时:

$pageSettings["MidHeight"]

我明白了:

PHP Fatal error:  Cannot use object of type stdClass as array.

【问题讨论】:

    标签: php jquery arrays json associative-array


    【解决方案1】:

    使用属性访问表示法 ($pageSettings->MidHeight) 或告诉 json_decode 始终使用第二个参数为您提供关联数组:$pageSettings = json_decode($json_str, true);

    【讨论】:

    • 什么对性能更好?这是主页,并且会发生很多!,使用 -> 或让 json,true 将其修复为数组?
    • 性能差异可以忽略不计。 (如果您关心性能,那么无论如何您都不会使用 PHP。)我认为您应该使用关联数组,因为您不必担心在 PHP 对象中可能难以或不可能表示的键名。
    • 好的,“如果我关心性能”,我会使用什么? :),(让我在 5 分钟内接受你的回答。)
    • Francis,您介意解释一下 php 的性能替代方案吗?
    • 真的吗?任何带有 JIT 编译的东西,任何可以编译成机器代码的东西,见鬼,任何不会在每个请求之间完全折腾环境的东西。默认情况下,PHP 甚至不缓存已解析的字节码。除了节省十几毫秒之外,还有许多更重要的考虑因素。
    猜你喜欢
    • 2019-06-07
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    相关资源
    最近更新 更多