多维关联数组分组、过滤和回显
Multidimensional associative array group, filter and echo
有人可以给我几个提示吗?无论我是否使用 array_column、array_push、array_filter、array_diff 来尝试...我总是会出错。
我想对一个多维关联数组进行分组,过滤它并回显这些组。
我的阵列例如是:
$cars = [
['Hersteller' => 'Audi',
'Modell' => 'Btron',
'Preis' => '60.000 €'
],
['Hersteller' => 'Tesla',
'Modell' => 'Unununium',
'Preis' => '5.000 €'
],
['Hersteller' => 'Audi',
'Modell' => 'Quattro',
'Preis' => '40.000 €'
],
['Hersteller' => 'Opel',
'Modell' => 'Astra',
'Preis' => '20.000 €'
],
['Hersteller' => 'Abba',
'Modell' => 'Golf',
'Preis' => '2.000 €'
],
['Hersteller' => 'Lamborghini',
'Modell' => 'Diablo',
'Preis' => '95.000 €'
],
['Hersteller' => 'Tesla',
'Modell' => 'Roadster',
'Preis' => '65.000 €'
],
];
我想按 producer/Hersteller 分组 - 通过将其过滤到新数组中,从原始数组中删除新数组并回显每个数组。
$cars2 = [];
$cars3 = [];
$cars4 = [];
$cars2 = array_filter($cars, function ($var) {
return ($var['Hersteller'] == 'Audi');
});
$cars3 = array_filter($cars, function ($var) {
return ($var['Hersteller'] == 'Tesla');
});
$cars4 = array_diff($cars, $cars2, $cars3);
...并用 foreach ($cars2 as $car) 回显每个数组 {
回声''。 'Hersteller: '。 $cars2['Hersteller'] ...
我的问题(主要)是array_diff!
由于 array_diff()
不能很好地处理多维数组(它喜欢处理字符串),您可以使用 array_udiff()
,这意味着您必须编写自己的比较。但是多亏了宇宙飞船运算符 (<=>
),您可以使用这个来比较这些值...
$cars4 = array_udiff($cars, $cars2, $cars3, function ( $a, $b) {
return $a <=> $b;
});
有人可以给我几个提示吗?无论我是否使用 array_column、array_push、array_filter、array_diff 来尝试...我总是会出错。
我想对一个多维关联数组进行分组,过滤它并回显这些组。
我的阵列例如是:
$cars = [
['Hersteller' => 'Audi',
'Modell' => 'Btron',
'Preis' => '60.000 €'
],
['Hersteller' => 'Tesla',
'Modell' => 'Unununium',
'Preis' => '5.000 €'
],
['Hersteller' => 'Audi',
'Modell' => 'Quattro',
'Preis' => '40.000 €'
],
['Hersteller' => 'Opel',
'Modell' => 'Astra',
'Preis' => '20.000 €'
],
['Hersteller' => 'Abba',
'Modell' => 'Golf',
'Preis' => '2.000 €'
],
['Hersteller' => 'Lamborghini',
'Modell' => 'Diablo',
'Preis' => '95.000 €'
],
['Hersteller' => 'Tesla',
'Modell' => 'Roadster',
'Preis' => '65.000 €'
],
];
我想按 producer/Hersteller 分组 - 通过将其过滤到新数组中,从原始数组中删除新数组并回显每个数组。
$cars2 = [];
$cars3 = [];
$cars4 = [];
$cars2 = array_filter($cars, function ($var) {
return ($var['Hersteller'] == 'Audi');
});
$cars3 = array_filter($cars, function ($var) {
return ($var['Hersteller'] == 'Tesla');
});
$cars4 = array_diff($cars, $cars2, $cars3);
...并用 foreach ($cars2 as $car) 回显每个数组 { 回声''。 'Hersteller: '。 $cars2['Hersteller'] ...
我的问题(主要)是array_diff!
由于 array_diff()
不能很好地处理多维数组(它喜欢处理字符串),您可以使用 array_udiff()
,这意味着您必须编写自己的比较。但是多亏了宇宙飞船运算符 (<=>
),您可以使用这个来比较这些值...
$cars4 = array_udiff($cars, $cars2, $cars3, function ( $a, $b) {
return $a <=> $b;
});