如何将数组传递给GET_THE_CATEGORY_BY_ID()并取回数组?

时间:2013-06-27 作者:JPollock

我正在尝试将类别ID数组传递给get_category_by_ID() 以获取类别名称数组。既然我还在努力让它发挥作用,我就用var_dump() 在输出上。我使用的是值1、5、3,因为5和3是我拥有的类别,而1是未分类的,这是我需要的。

我从以下内容开始:

    $CatID = array(1, 5, 3,);
foreach ($CatID as $ID) { 
    $names = get_the_category_by_ID($ID);
}
var_dump($names);
我为类别3返回了正确的类别名称,但没有返回其他名称。然后我试着这样做:

$CatID = array(1, 5, 3,);
$x=0;
foreach ($CatID as $ID) { 
    if ($x==3) break;
    $names[$x] = get_the_category_by_ID($ID[$x]);
    $x++;
}
var_dump($names);
这次我得到了一系列错误:

array
0 => 
object(WP_Error)[262]
  public \'errors\' => 
    array
      \'invalid_term\' => 
        array
          ...
  public \'error_data\' => 
    array
      empty
 1 => 
 object(WP_Error)[261]
  public \'errors\' => 
    array
      \'invalid_term\' => 
        array
          ...
  public \'error_data\' => 
    array
      empty
2 => 
object(WP_Error)[215]
  public \'errors\' => 
    array
      \'invalid_term\' => 
        array
          ...
  public \'error_data\' => 
    array
      empty

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

修改第一个代码块:

$names = array();
$CatID = array( 1, 5, 3,);
foreach ( $CatID as $ID ) { 
    $names[] = get_the_category_by_ID( $ID );
    // uncomment the next line to get the name tied to the ID
    // $names[$ID] = get_the_category_by_ID( $ID );
}
var_dump( $names );
参见PHParray() reference 有关使用数组的详细信息。

为什么代码不起作用在第一个示例中,您正在循环$CatID 数组,指定返回自get_the_category_by_ID()$names. 每次通过循环时,您都会覆盖$names 变量,这就是为什么3 -- 列表中的最后一个--粘住了。

在第二个示例中,您以另一种方式摆得太远了--您试图获得$ID[$x], 但是$ID 不是数组,因此您正在处理无效值(可能是null) 到get_the_category_by_ID(). 这就是为什么它会返回WP_Error 对象。

结束