如何使用laravel集合从多维数组中获取匹配值的数组

时间:2017-05-19 21:09:56

标签: php multidimensional-array laravel-5 laravel-collection

我的答案如下:

Array (
    [0] => Array (
            [0] => Array (
                    [Product] => 'Product1'
                    [Total] => $10
                   )
            [1] =>  Array (
                     [Product] => 'Product2'
                     [Total] => $50 
                   )
           )    
    [1] => Array (
           [0] => Array (
                   [Product] => 'Product1'
                   [Total] => $20
                  )
           [1] => Array (
                   [Product] => 'Product2'
                   [Total] => $30 
                  )
           )
    [2] => Array (
           [0] => Array (
                   [Product] => 'Product1'
                   [Total] => $0
                  )
           [1] => Array (
                   [Product] => 'Product2'
                   [Total] => $10 
           )
      )
 )

我希望获得Total的{​​{1}}数组,但只能使用laravel collection

我试过了:

Product1

当我打印$ data时,它显示空白数组;当我在每个内部回声时,它会给$data = []; $collection = collect($monthly_usage_data)->each(function ($item, $key) { $data['Total'][$key] = str_replace('$', '', collect($item)->where('Product', 'Product1')->pluck('Total')); echo str_replace('$', '', collect($item)->where('Product', 'Product1')->pluck('Total')); });

有人可以告诉我使用集合来获取["10"]["20"]["0"] total数组的正确方法

2 个答案:

答案 0 :(得分:1)

请记住,函数有自己的范围。除非您导入,否则全局范围内的$ data与函数内的$ data不同。

您可以使用以下命令将变量导入匿名函数:

function ($item, $key) use ($data) {

}

答案 1 :(得分:0)

通常你可以使用它:

$totals = $collection->where('Product', 'Product1')->mapWithKeys(function ($item) {
    return $item['Total'];
});

$totals->all();