PHP-检查一个数组中的值是否存在于另一个多维数组中

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

我有以下两个数组

这是一个平面数组字符串:$second_names:

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分类“=>”汽车“,”二级分类“=>”卡车“,”三级分类“=>”奔驰“,;复制并粘贴整个脚本,导致错误。我会看一看。好的。我想我成功了。我在脚本中使用了圆括号而不是方括号。因为我使用了查找和替换函数:-