PHP-检查一个数组中的值是否存在于另一个多维数组中
我有以下两个数组 这是一个平面数组字符串:$second_names:PHP-检查一个数组中的值是否存在于另一个多维数组中,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下两个数组 这是一个平面数组字符串:$second_names: Array ( [0] => Cars [3] => Bikes [8] => Trucks ) //$second_names 我有一个多维数组-字符串:$premiumCatArraySets: Array ( [0] => Array ( [primary-category] => Automobiles [seco
Array ( [0] => Cars [3] => Bikes [8] => Trucks ) //$second_names
我有一个多维数组-字符串:$premiumCatArraySets:
Array
(
[0] => Array
(
[primary-category] => Automobiles
[secondary-category] => Cars
[tertiary-category] => Fiat Punto
)
[1] => Array
(
[primary-category] => Automobiles
[secondary-category] => Cars
[tertiary-category] => BMW
)
[2] => Array
(
[primary-category] => Automobiles
[secondary-category] => Bikes
[tertiary-category] => Honda
)
[4] => Array
(
[primary-category] => Automobiles
[secondary-category] => Trucks
[tertiary-category] => Iveco
)
[6] => Array
(
[primary-category] => Automobiles
[secondary-category] => Cars
[tertiary-category] => Mercedes
)
[9] => Array
(
[primary-category] => Automobiles
[secondary-category] => Cars
[tertiary-category] => Toyota
)
我试图使用in_数组来查看平面数组中的值是否存在,并输出汽车品牌
这就是我试过的
foreach ($second_names as $second_name) {//Vechile type e.g. car, truck, bike
if(in_array($second_name, $premiumCatArraySets)){
echo '<h2>'.$second_name.'</h2>';
foreach ($third_names as $third_name) {// e.g. Fiat, BMW, Toyota
echo $third_name.'<br/>';
}
}
}
ifin_数组$second_name,$premiumCatArraySets{的行似乎没有显示任何内容。如果我的理解是正确的,您必须从第二个数组中为第一个数组中的每辆车获取车辆品牌。您可以执行以下操作。这是一个基本脚本
<?php
$vehicles = ['Cars', 'Bikes', 'Trucks'];
$details = [
[
'primary-category' => 'Automobiles',
'secondary-category' => 'Cars',
'tertiary-category' => 'BMW'
],
[
'primary-category' => 'Automobiles',
'secondary-category' => 'Trucks',
'tertiary-category' => 'Benz'
]
];
foreach ($vehicles as $vehicle) {
foreach ($details as $detail) {
if ($vehicle == $detail['secondary-category']) {
echo $detail['tertiary-category'];
break;
}
}
}
?>
如果我的理解是正确的,您必须从第二个数组中为第一个数组中的每个车辆获取车辆品牌。您可以执行以下操作。这是一个基本脚本
<?php
$vehicles = ['Cars', 'Bikes', 'Trucks'];
$details = [
[
'primary-category' => 'Automobiles',
'secondary-category' => 'Cars',
'tertiary-category' => 'BMW'
],
[
'primary-category' => 'Automobiles',
'secondary-category' => 'Trucks',
'tertiary-category' => 'Benz'
]
];
foreach ($vehicles as $vehicle) {
foreach ($details as $detail) {
if ($vehicle == $detail['secondary-category']) {
echo $detail['tertiary-category'];
break;
}
}
}
?>
试一试
参考:
试一试
参考:
使用call_user_func_数组、array_merge_递归、array_键、array_翻转、array_intersect_键和内爆函数的解决方案:
// grouping each category preserving the position of each item
$groups = call_user_func_array('array_merge_recursive', $premiumCatArraySets);
foreach ($second_names as $name) {
$indexes = array_flip(array_keys($groups['secondary-category'], $name));
echo '<h2>'.$name.'</h2>';
echo implode(", ", array_intersect_key($groups['tertiary-category'], $indexes)) .'<br/>';
}
输出:
CarsFiat Punto、BMW、Mercedes、ToyotaBikesHondaTrucksIveco使用调用用户函数数组、数组合并递归、数组键、数组翻转、数组相交键和内爆函数的解决方案:
// grouping each category preserving the position of each item
$groups = call_user_func_array('array_merge_recursive', $premiumCatArraySets);
foreach ($second_names as $name) {
$indexes = array_flip(array_keys($groups['secondary-category'], $name));
echo '<h2>'.$name.'</h2>';
echo implode(", ", array_intersect_key($groups['tertiary-category'], $indexes)) .'<br/>';
}
输出:
CarsFiat Punto、BMW、Mercedes、Toyotabikeshondatrucksivecotanks。告诉我PHP致命错误:函数名必须是if$vehicle==$detail['secondary-category'的字符串{你试过在我的回答中执行相同的脚本?对我来说很有吸引力!是的,我试过在小范围内执行。$secondary_names=array'Cars'、'Bikes'、'Trucks';$details=array 0=>array'primary category'=>'Automobiles'、'secondary category'=>'Cars'、'treative category'=>'BMW',1=>array'primary分类“=>”汽车“,”二级分类“=>”卡车“,”三级分类“=>”奔驰“,;复制并粘贴导致错误的整个脚本。我会看一看。好的。我想我成功了。我在脚本中使用了圆括号而不是方括号。因为我使用了查找和替换函数:-谢谢。它告诉我P致命错误:函数名必须是if$vehicle==$detail['secondary-category']的字符串{你试过在我的回答中执行相同的脚本?对我来说很有吸引力!是的,我试过在小范围内执行。$secondary_names=array'Cars'、'Bikes'、'Trucks';$details=array 0=>array'primary category'=>'Automobiles'、'secondary category'=>'Cars'、'treative category'=>'BMW',1=>array'primary分类“=>”汽车“,”二级分类“=>”卡车“,”三级分类“=>”奔驰“,;复制并粘贴整个脚本,导致错误。我会看一看。好的。我想我成功了。我在脚本中使用了圆括号而不是方括号。因为我使用了查找和替换函数:-