使用多维数组过滤集合

fyr*_*roc 4 php laravel laravel-5

我有一个多维数组的集合。我需要仅过滤具有特定颜色的项目,但是颜色字段位于多维范围内。通常它就像这样简单$collection->where('color','green')

对于更复杂的事情我将如何执行此WHERE条款?

[
    'product' => 'Desk', 
    'info' => [
            'namespace' => 'green', 
            'key' => 'blue',
        ],
        [
            'namespace' => 'orange', 
            'key' => 'red',
        ],
    ]
],
[
    'product' => 'Chair', 
    'info' => [
            'namespace' => 'green', 
            'key' => 'blue',
        ],
        [
            'namespace' => 'purple', 
            'key' => 'pink',
        ],
    ]
],
Run Code Online (Sandbox Code Playgroud)

在这个数组中,我如何获得具有该键值green的所有产品info['namespace']

$collection->where('info['namespace']','green')基本上就是我正在寻找的。

mat*_*tpb 8

我认为使用filter集合方法你会得到更好的结果(where似乎嵌套得不太优雅)。

关于过滤方法的 Laravel 文档

例子:

$greenNamespaceCollection = $collection->filter(function ($value, $key) {

    return collect($value['info'])->contains('namespace' 'green');
})
Run Code Online (Sandbox Code Playgroud)