首先,我感谢阅读这篇文章的所有人。 这是问题所在。 我试图从这个类别数组下的这两个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] =>
)
)
答案 0 :(得分:0)
您可以将array_map
与回调函数一起使用。在不了解您的代码的情况下,我可以假设您可以尝试这样的事情:
function get_category_id($category) {
return $category['category_id'];
}
$category_id = array_map('get_category_id', $categories);
如果要映射的数组数组,您也可以调查call_user_func_array
。我自己还在学习PHP,但我认为这应该有帮助
答案 1 :(得分:0)
In my mind, this is a job for array_reduce. Each iteration adds to the array as it goes.
http://php.net/manual/en/function.array-reduce.php
<?php
$data = makeSomeData();
$categories = array_reduce($data, function($carry, $item){
$carry[] = $item->category_id;
return $carry;
}, []);
print_r($categories);
echo "\n";
function makeSomeData() {
$input = [65, 165, 265, 365];
$data = [];
foreach($input as $id) {
$a = new stdClass;
$a->category_id = $id;
$data[] = $a;
}
return $data;
}
答案 2 :(得分:0)
Not sure about the foreach you referred for array or object inside, but for your case, simply do this
$catesTmp[] = array_map( function($item){
return !empty($item->category_id) ? $item->category_id : null;
}, $categories );
It will return results you need.