Issue
I have the following array that I need to filter it and get just the elements which have 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
]
]
This is the expected result:
array:2 [
0 => array:3 [
"id" => 1
"name" => "Agua Corriente"
"type" => 1
]
1 => array:3 [
"id" => 2
"name" => "Cloaca"
"type" => 1
]
]
I'm trying to solve it with Arr::where
helper but I'm not getting the expected result.
Does anyone can help me?
Regards
Solution
$filteredArray = Arr::where($myArray, function ($value, $key) {
return $value['type'] == 1;
});
This is how you can use Arr::where
in your array, and should work fine.
Also for things like this laravel collections have really handy tools, you should have a look at it as well.
If you want to filter based on a dynamically assigned variable, which most of the times is the case you can simply inject it in your nested function like:
$type = 1;
$filteredArray = Arr::where($myArray, function ($value, $key) use($type) {
return $value['type'] == $type;
});
Answered By - pr1nc3
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.