访问PHP数组对象(stdClass)值

时间:2014-08-23 20:20:07

标签: php arrays wordpress object

我正在使用WordPress'原生函数get_the_terms 并返回此数组,其中包含一个对象:

array (size=2)
  157 => 
    object(stdClass)[41]
      public 'term_id' => int 157
      public 'name' => string 'Entertainment' (length=13)
      public 'slug' => string 'entertainment' (length=13)
      public 'term_group' => int 0
      public 'term_taxonomy_id' => int 157
      public 'taxonomy' => string 'category' (length=8)
      public 'description' => string '' (length=0)
      public 'parent' => int 0
      public 'count' => int 1
      public 'object_id' => int 644
      public 'filter' => string 'raw' (length=3)
  151 => 
    object(stdClass)[40]
      public 'term_id' => int 151
      public 'name' => string 'Featured' (length=8)
      public 'slug' => string 'featured' (length=8)
      public 'term_group' => int 0
      public 'term_taxonomy_id' => int 151
      public 'taxonomy' => string 'category' (length=8)
      public 'description' => string '' (length=0)
      public 'parent' => int 0
      public 'count' => int 1
      public 'object_id' => int 644
      public 'filter' => string 'raw' (length=3)

如何访问

  public 'name' => string 'Featured' (length=8)

这有效

$terms = get_the_terms( $post->ID, 'category' );
foreach ($terms as $term) {
    $test = $term->name;
    echo $test;
}

这不起作用:

for($i=1; $i<3; $i++) {
    $term = $terms->name;
    echo $term;
}

这也不起作用

for($i=1; $i<3; $i++) {
    $term = $terms[0]->name;
    //$term = $terms[1]->name;
    //$term = $terms[157]->name; // works but not reliable
    echo $term;
}

为什么?

3 个答案:

答案 0 :(得分:1)

函数get_the_terms返回一个数组,该数组由每个元素的term_id索引。

这就是为什么$terms[157]$terms[151]按预期工作的原因。有关此行为的详细信息,请参阅PHP reference on arrays

您最好的选择是坚持使用内置的foreach,其效果与您的问题相同。

答案 1 :(得分:1)

在for循环中,您尝试直接在数组中访问名称,而不是stdclass对象。

您需要使用$i变量作为数组的索引。

for ($i=1; $i<3; $i++) {
    $term = $terms[$i]->name;
    echo $term;
}

答案 2 :(得分:0)

使用 wp_parse_args 系统管理其单个 $ args 参数的功能,可以为您提供所需的任何值。在这种情况下,$ args存储详细的显示覆盖,这是在许多WordPress函数中找到的模式。

$args = wp_parse_args( $args, $term->name );
echo $arg[157]['term_id']; //output 157
echo $arg[157]['name'];  //output Entertainment

为我提供更多详细信息

http://codex.wordpress.org/Function_Reference/wp_parse_args