我有以下数组,我需要对其进行过滤,只得到具有以下特征的元素 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
但我没有得到预期的结果,有谁可以帮助我吗?
尊敬的各位
$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;
});
你可以使用集合 where
:
collect($array)->where('type', 1)->all();
您可以使用 array_filter
并在里面给你需要的条件。
$data = array_filter($array, function ($item) {
return $item["type"] === 1;
});
print_r($data);