无法从多维数组

时间:2017-06-21 13:39:22

标签: php wordpress

函数wp_get_post_terms返回一个对象

$terms = wp_get_post_terms( get_the_ID(), 'category', $args );

我需要根据它的值删除其中一个对象:

$current_id = get_queried_object_id();
 foreach( $terms as $key => $value ){
   if( in_array($current_id, $value[$key]) ){
     unset($terms[$key]);
   }
}

但是我陷入了这个错误:

  

未捕获错误:无法使用WP_Term类型的对象作为数组

2 个答案:

答案 0 :(得分:1)

我认为你的错误在于:

if( in_array($current_id, $value[$key]) ){

因为$value是WP_Term,但您尝试使用$key(链接到$terms而不是$value的索引来访问它。

答案 1 :(得分:1)

您可能希望将有效字词保存到第二个数组中:

$terms = wp_get_post_terms( get_the_ID(), 'category', $args );
$validTerms = [];
$current_id = get_queried_object_id();
foreach( $terms as $key => $value ){
   if( $value->term_id != $current_id) {
       $validTerms[$key] = $value;
   }
}

修改

错误源于if声明,正如Julien Lachal所解释的那样。

因此,以下是与unset相同的答案term

$terms = wp_get_post_terms( get_the_ID(), 'category', $args );
$current_id = get_queried_object_id();
foreach( $terms as $key => $value ){
   if( $value->term_id == $current_id) {
       unset($terms[$key]);
       break; //Found our guilty term, no need to continue the `foreach`.
   }
}