不能使用WP_Term类型的对象作为数组

时间:2018-04-16 15:26:53

标签: php wordpress

鉴于以下类别:

_Hello
_1979

我正在运行:

    $option = " ";
    $categories = get_categories( array( 'hide_empty'  => 0 ) ); 
    foreach ( $categories as $category ) {
      // Since string indexing is zero-based, we want to check if
      // the first char is an underscore and
      // the second character is a digit
      if( $category[0] === '_' && ctype_digit( $category[1] ) ) {
        // chop off the leading underscore
        $category = substr( $category, 1 );
      } else {
        $option .= '<option>'.$category->name.'</option>';
      }
    }
    return $option;

但它返回:

  

不能使用WP_Term类型的对象作为数组

首先,我首先检查Category是否有underscore,如果是,我会检查它是以string还是number开头。如果它是string,那么我输出<option>

2 个答案:

答案 0 :(得分:1)

$categories包含一组对象(类型为WP_Term的对象)而不是一个数组,假设该对象包含一个属性名称,您可以将其作为

进行访问
  $category->name

if( $category->name[0] === '_' && ctype_digit( $category->name[1] ) )

答案 1 :(得分:1)

$category是一个对象,而不是字符串,因此您无法检查它的第一个字符。你也不能按照下一行来获取它的子串。

对于您尝试将$category->name作为字符串引用的所有实例,您可能需要考虑的是$category

if( $category->name[0] === '_' && ctype_digit( $category->name[1] ) ) {
    // chop off the leading underscore
    $category->name = substr( $category->name, 1 );