如何从另一个数组中只排列一个键

时间:2017-06-21 作者:Mike

我正在编辑类别。php模板和我需要一个当前类别子对象的数组。

我可以获得当前类别子级的数组,但键太多,我使用以下方法:

//get category ID                
$catego = get_category( get_query_var( \'cat\' ) );
$cat_id = $catego->cat_ID;

//list current category childs
$catlist = get_categories(
            array(
            \'child_of\' => $cat_id,
            \'orderby\' => \'id\',
            \'order\' => \'ASC\'
) );
这给了我以下信息:

Array
(
    [0] => WP_Term Object
        (
            [term_id] => 11
            [name] => test1
            [slug] => test1
            [term_group] => 0
            [term_taxonomy_id] => 11
            [taxonomy] => category
            [description] => 
            [parent] => 10
            [count] => 3
            [filter] => raw
            [cat_ID] => 11
            [category_count] => 3
            [category_description] => 
            [cat_name] => test1
            [category_nicename] => test1
            [category_parent] => 10
        )

    [1] => WP_Term Object
        (
            [term_id] => 12
            [name] => test2
            [slug] => test2
            [term_group] => 0
            [term_taxonomy_id] => 12
            [taxonomy] => category
            [description] => 
            [parent] => 10
            [count] => 1
            [filter] => raw
            [cat_ID] => 12
            [category_count] => 1
            [category_description] => 
            [cat_name] => test2
            [category_nicename] => test2
            [category_parent] => 10
        )

)
现在,我想从这个数组创建一个只有[cat\\u ID]键的数组。我试过以下方法,但一无所获(http://php.net/manual/en/function.array-column.php ):

$category_id = array_column($catlist, \'[cat_ID]\');
print_r($category_id);
有什么想法吗?提前谢谢。

3 个回复
最合适的回答,由SO网友:Sumesh S 整理而成

Try this :

// This converts the WP_Term Object to array.
$catlist = json_decode(json_encode($catlist),true);

$category_id = array_column($catlist, \'cat_ID\');
print_r($category_id);
SO网友:Sebastian Kurzynowski

您可以随时使用array_map()

$category_id = array();
$category_id = array_map( function ($data){
            return $data[\'cat_ID\'];
        }, $catlist);
或wordpress功能:

   $category_id = array();
   $category_id =  wp_list_pluck( $catlist, \'cat_ID\' );

SO网友:Senta

foreach循环工作:

$category_id = array();
foreach ($catlist as $cat){
    $category_id[] = $cat->cat_ID;
}

结束

相关推荐

在特定页面上加载Header.php

(TL;DR 以下提供)我在使用Divi主题时遇到了一个问题。我正在使用Gravity表单插件生成一个具有多重上传的表单。这种多重上传似乎使用了Ajax,从我的小测试来看,这似乎与Divi相冲突。(我将CDN置于开发模式并停用了所有插件,上载按钮/拖放仍然不起作用)。这个问题的解决方案是删掉一些代码:gravity_form_enqueue_scripts( 2, true ); 开业前<?php 以及wp_head(); ?>. 然而,这与台式机上的全宽Divi头冲突。在某种意义