我如何仅从特定的多阵列获取八月的数据

时间:2019-02-05 12:27:01

标签: php arrays sorting filter

    $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 ))。

2 个答案:

答案 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);
});