$arr = [
(Object)[
'interval' => "2018-08-26",
'product_id' => 12 ,
'size' => 10
],
(Object)[
'interval' => "2018-09-26",
'product_id' => 26 ,
'size' => 25
],
(Object)[
'interval' => "2018-07-26",
'product_id' => 50 ,
'size' => 28
],(Object)[
'interval' => "2018-08-26",
'product_id' => 60,
'size' => 89
],
(Object)[
'interval' => "2018-12-26",
'product_id' => 75,
'size' => 89
],
(Object)[
'interval' => "2018-09-26",
'product_id' => 98 ,
'size' => 89
]
];
我只需要12和60个产品ID。如何从该数组中过滤(因为只有它们的interval
为8月( 08 ))。
答案 0 :(得分:2)
如果您输入的是ID,并且想获取日期,请尝试
$ids = [12,60];
$result = array_filter($arr, function($e) use($ids) {
return in_array($e->product_id, $ids);
});
$dates = array_map(function($e) { return $e->interval; }, $result );
工作示例here
更新
如果您输入的是月份号,例如08
,您想获取ID,然后尝试此操作
$result = array_filter($arr, function($e) {
return substr($e->interval,5,2) == '08';
});
$ids = array_map(function($e) { return $e->product_id; }, $result );
工作示例here。 $result
包含完整的对象,因此您可以读取project_is和大小。
答案 1 :(得分:1)
尝试一下:
$arrays = array_filter($arrays,function($arr){
return substr($arr->interval,5,2) == '08';
});
array_walk($arrays,function($obj){
unset($obj->interval);
});