<?php
$init = [
[
'unique_codename'=>'cars',
'sorts'=>[
['codename' => 'cars', 'name' => 'audi'],
['codename' => 'cars', 'name' => 'volvo']
],
'category'=>'vehicle',
],
[
'unique_codename'=>'fruit',
'sorts'=>[
['codename' => 'fruit', 'name' => 'banana'],
['codename' => 'fruit', 'name' => 'apple'],
],
'category'=>'food',
],
[
'unique_codename'=>'vegetables',
'sorts'=>[
['codename' => 'vegetables', 'name' => 'cauliflower'],
],
'category'=>'food',
],
];
$array = [
['codename'=>'fruit', 'name'=>'banana', 'type'=>'yellowbanana'],
['codename'=>'fruit', 'name'=>'banana', 'type'=>'brownbanana'],
['codename'=>'cars', 'name'=>'audi', 'type'=>'a2'],
['codename'=>'fruit', 'name'=>'banana', 'type'=>'greenbanana'],
['codename'=>'cars', 'name'=>'audi', 'type'=>'a6'],
['codename'=>'cars', 'name'=>'other', 'type'=>'dummytext1'],
['codename'=>'cars', 'name'=>'other', 'type'=>'dummytext2'],
];
$init = array_combine(array_column($init, 'unique_codename'), $init);
foreach ($array as $k => $item) {
if (isset($init[$item['codename']])) {
foreach ($init[$item['codename']]['sorts'] as &$sort) {
if ($sort['name'] == $item['name']) {
$sort['types'][] = $item['type'];
}
}
}
}
print_r(array_values($init));
- 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
(
[0] => Array
(
[unique_codename] => cars
[sorts] => Array
(
[0] => Array
(
[codename] => cars
[name] => audi
[types] => Array
(
[0] => a2
[1] => a6
)
)
[1] => Array
(
[codename] => cars
[name] => volvo
)
)
[category] => vehicle
)
[1] => Array
(
[unique_codename] => fruit
[sorts] => Array
(
[0] => Array
(
[codename] => fruit
[name] => banana
[types] => Array
(
[0] => yellowbanana
[1] => brownbanana
[2] => greenbanana
)
)
[1] => Array
(
[codename] => fruit
[name] => apple
)
)
[category] => food
)
[2] => Array
(
[unique_codename] => vegetables
[sorts] => Array
(
[0] => Array
(
[codename] => vegetables
[name] => cauliflower
)
)
[category] => food
)
)
- 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
(
[0] => Array
(
[unique_codename] => cars
[sorts] => Array
(
[0] => Array
(
[codename] => cars
[name] => audi
[types] => Array
(
[0] => a2
[1] => a6
)
)
[1] => Array
(
[codename] => cars
[name] => volvo
)
)
[category] => vehicle
)
[1] => Array
(
[unique_codename] => fruit
[sorts] => Array
(
[0] => Array
(
[codename] => fruit
[name] => banana
[types] => Array
(
[0] => yellowbanana
[1] => brownbanana
[2] => greenbanana
)
)
[1] => Array
(
[codename] => fruit
[name] => apple
)
)
[category] => food
)
[2] => Array
(
[unique_codename] => vegetables
[sorts] => Array
(
[0] => Array
(
[codename] => vegetables
[name] => cauliflower
)
)
[category] => food
)
)
preferences:
172.74 ms | 413 KiB | 290 Q