<?php
$json = '[
{
"name": "D\'Amore Ltd",
"id": 67,
"catId": 1
}, {
"name": "D\'Amore Ltd",
"id": 67,
"catId": 2
}, {
"name": "D\'Amore Ltd",
"id": 67,
"catId": 3
}, {
"name": "Kuvalis, Denesik and Terry",
"id": 14,
"catId": 1
}, {
"name": "Labadie-Bauch",
"id": 1,
"catId": 1
}, {
"name": "Labadie-Bauch",
"id": 1,
"catId": 2
}
]';
$locations = json_decode($json);
$categories = [1, 2];
$collection = [];
$grouped = array_reduce($locations, function ($grouped, $location) {
$grouped[$location->name][] = $location->catId;
return $grouped;
}, []);
$grouped = array_filter($grouped, function ($_categories) use ($categories) {
return ! array_diff($categories, $_categories);
});
foreach ($locations as $location) {
if (isset($grouped[$location->name]) && in_array($location->catId, $categories)) {
$collection[] = $location;
}
}
var_dump($collection);
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
- array(4) {
[0]=>
object(stdClass)#1 (3) {
["name"]=>
string(11) "D'Amore Ltd"
["id"]=>
int(67)
["catId"]=>
int(1)
}
[1]=>
object(stdClass)#2 (3) {
["name"]=>
string(11) "D'Amore Ltd"
["id"]=>
int(67)
["catId"]=>
int(2)
}
[2]=>
object(stdClass)#5 (3) {
["name"]=>
string(13) "Labadie-Bauch"
["id"]=>
int(1)
["catId"]=>
int(1)
}
[3]=>
object(stdClass)#6 (3) {
["name"]=>
string(13) "Labadie-Bauch"
["id"]=>
int(1)
["catId"]=>
int(2)
}
}
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array(4) {
[0]=>
object(stdClass)#1 (3) {
["name"]=>
string(11) "D'Amore Ltd"
["id"]=>
int(67)
["catId"]=>
int(1)
}
[1]=>
object(stdClass)#2 (3) {
["name"]=>
string(11) "D'Amore Ltd"
["id"]=>
int(67)
["catId"]=>
int(2)
}
[2]=>
object(stdClass)#5 (3) {
["name"]=>
string(13) "Labadie-Bauch"
["id"]=>
int(1)
["catId"]=>
int(1)
}
[3]=>
object(stdClass)#6 (3) {
["name"]=>
string(13) "Labadie-Bauch"
["id"]=>
int(1)
["catId"]=>
int(2)
}
}
preferences:
156.88 ms | 403 KiB | 289 Q