首页 > 解决方案 > 基于元素值的 Laravel 过滤器数组

问题描述

我有以下数组,我需要对其进行过滤并仅获取具有type = 1

array:5 [
  0 => array:3 [
    "id" => 1
    "name" => "Agua Corriente"
    "type" => 1
  ]
  1 => array:3 [
    "id" => 2
    "name" => "Cloaca"
    "type" => 1
  ]
  2 => array:3 [
    "id" => 3
    "name" => "Gas Natural"
    "type" => 2
  ]
  3 => array:3 [
    "id" => 4
    "name" => "Internet"
    "type" => 3
  ]
  4 => array:3 [
    "id" => 5
    "name" => "Electricidad"
    "type" => 3
  ]
]

这是预期的结果:

array:2 [
  0 => array:3 [
    "id" => 1
    "name" => "Agua Corriente"
    "type" => 1
  ]
  1 => array:3 [
    "id" => 2
    "name" => "Cloaca"
    "type" => 1
  ]
]

我正在尝试用Arr::where助手解决它,但我没有得到预期的结果。有人可以帮助我吗?

问候

标签: phplaravellaravel-5

解决方案


$filteredArray = Arr::where($myArray, function ($value, $key) {
    return $value['type'] == 1;
});

这就是您可以Arr::where在阵列中使用的方式,并且应该可以正常工作。

同样对于像这样的东西,laravel 集合有非常方便的工具,你也应该看看它。

如果您想基于动态分配的变量进行过滤,大多数情况下您可以简单地将其注入嵌套函数中,例如:

    $type = 1;
    $filteredArray = Arr::where($myArray, function ($value, $key) use($type) {
        return $value['type'] == $type;
    });

推荐阅读