【问题标题】:'Cannot use object of type stdClass as array' using Wordpress'不能将 stdClass 类型的对象用作数组' 使用 Wordpress
【发布时间】:2011-09-04 12:41:13
【问题描述】:

我正在尝试在 wordpress 帖子中检索标签的 slug,现在可以使用

获取所有标签信息
$tag = wp_get_post_tags($post->ID);

更多信息请访问Wordpress Docs

通过使用它,您应该得到像这样返回的数据...

Array
(
   [0] => stdClass Object
       (
           [term_id] => 4
           [name] => tag2
           [slug] => tag2
           [term_group] => 0
           [term_taxonomy_id] => 4
           [taxonomy] => post_tag
           [description] => 
           [parent] => 0
           [count] => 7
       )

   [1] => stdClass Object
       (
           [term_id] => 7
           [name] => tag5
           [slug] => tag5
           [term_group] => 0
           [term_taxonomy_id] => 7
           [taxonomy] => post_tag
           [description] => 
           [parent] => 0
           [count] => 6
       )

)

现在我想要的是第一项的 slug 应该如下

$tag[0]['slug']

但是这样做我收到了这个 php 错误:

不能将 stdClass 类型的对象用作 数组

有人可以告诉我我在这里做错了什么吗?以及获取 slug 数据的最佳方法是什么

【问题讨论】:

    标签: php arrays wordpress tags


    【解决方案1】:

    请注意,该数组包含 objectsstdClass 的实例),而不是其他数组。所以语法是:

    $tag[0]->slug
    

    【讨论】:

    • 啊,这正是我想要的。认为我需要回到 php 基础
    • 您好,我将“@classId”作为要获取的名称,而不是“slug”。在令牌'@'处出现语法错误,你知道有什么解决方法吗?谢谢
    • 仅供参考。我正在调用带有 out 参数的 mysql proc,然后在下一个查询中进行选择。
    • @mtk,使用$tag[0]->{"@classId"}
    • @radu 没用。问过同样的问题here。请看。
    【解决方案2】:

    另一种选择应该是将 $tag[0] 显式转换为数组:

    $t = (array)$tag[0];
    $t["slug"] = ...
    

    虽然无法正常工作

    【讨论】:

    • 我在 wordpress 中为我的菜单创建了一个自定义walker。不知何故,它在一个参数中同时使用了 objectsarrays。这段代码的小和平起到了作用,但并不知道。
    猜你喜欢
    • 2012-03-29
    • 2011-10-12
    • 1970-01-01
    • 2021-12-17
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多