Php 不使用foreach获取std类值

Php 不使用foreach获取std类值,php,arrays,object,Php,Arrays,Object,首先,我要感谢所有读过这篇文章的人。 这就是问题所在。 我试图从这个categories数组下的两个std类中获取category_id,并将它们添加到另一个数组中,如 $categories = array(75,65); 我是否可以不用foreach就得到它们? 它已经在foreach中,我需要这个类别来继续下一步 [categories] => Array ( [0] => stdClass Object ( [product_

首先,我要感谢所有读过这篇文章的人。 这就是问题所在。 我试图从这个categories数组下的两个std类中获取category_id,并将它们添加到另一个数组中,如

$categories = array(75,65);
我是否可以不用foreach就得到它们? 它已经在foreach中,我需要这个类别来继续下一步

[categories] => Array
(
    [0] => stdClass Object
        (
            [product_category_id] => 83125
            [category_id] => 75
            [product_id] => 10836
            [ordering] => 2
            [category_parent_id] => 51
            [category_type] => product
            [category_name] => Men boxer
            [category_description] => 
            [category_published] => 1
            [category_ordering] => 3
            [category_left] => 34
            [category_right] => 35
            [category_depth] => 5
            [category_namekey] => product_1494167920_122781373
            [category_created] => 1494167920
            [category_modified] => 1502169524
            [category_access] => all
            [category_menu] => 0
            [category_keywords] => men swimsuit, men swimming pants, swimsuit, men swimming suit, long sleeve swimming suit
            [category_meta_description] => Buy men swimming suit at xxxxx, men long sleeve swimsuit and swimming boxer available, Buy 2 FREE shipping
            [category_layout] => 
            [category_page_title] => Men Swim Boxer - xxxxx
            [category_alias] => men-boxer
            [category_site_id] => 
            [category_canonical] => 
            [category_quantity_layout] => 
            [hasbought] => 
        )

    [1] => stdClass Object
        (
            [product_category_id] => 83124
            [category_id] => 65
            [product_id] => 10836
            [ordering] => 43
            [category_parent_id] => 43
            [category_type] => product
            [category_name] => Accessory
            [category_description] => 
            [category_published] => 1
            [category_ordering] => 5
            [category_left] => 87
            [category_right] => 114
            [category_depth] => 4
            [category_namekey] => product_1476761078_750345878
            [category_created] => 1476761078
            [category_modified] => 1502169605
            [category_access] => all
            [category_menu] => 0
            [category_keywords] => accessory, beach accessory, swimming accessory, xxxx
            [category_meta_description] => Shop accessory at xxxx, beach accessory, fashion accessory, gym accessory and many more, Free shipping & speed delivery
            [category_layout] => 
            [category_page_title] => Accessory - xxxxxxx
            [category_alias] => accessory
            [category_site_id] => 
            [category_canonical] => 
            [category_quantity_layout] => 
            [hasbought] => 
        )

)

您可以使用带有回调函数的
array\u map
。在不了解更多代码的情况下,我可以假设您可以尝试以下方法:

  function get_category_id($category) {
    return $category['category_id'];
  }
  $category_id = array_map('get_category_id', $categories);

如果要映射数组数组,还可以研究
调用用户函数数组
。我自己还在学习PHP,但我认为这应该对我有所帮助,这是array_reduce的工作。每次迭代都会添加到数组中


不确定您为内部数组或对象引用的foreach,但对于您的情况,只需这样做即可

$catesTmp[] = array_map( function($item){ 
    return !empty($item->category_id) ? $item->category_id : null;
}, $categories );

它将返回您需要的结果。

为什么不想在foreach中使用另一个foreach?@Geshode我担心它会拖慢处理速度。也许可以尝试一下,看看它是否会大大降低速度。
$catesTmp[] = array_map( function($item){ 
    return !empty($item->category_id) ? $item->category_id : null;
}, $categories );