Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多维数组中的Php字符串比较_Php_Arrays_Multidimensional Array - Fatal编程技术网

多维数组中的Php字符串比较

多维数组中的Php字符串比较,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个多维数组 Array ( [0] => Array ( [code] => 2079 [label] => Nike ) [1] => Array ( [code] => 1080 [label] => Adidas ) ) Array ( [0] => Array ( [manufacturers_id] =>

我有两个多维数组

Array
(
[0] => Array
    (
        [code] => 2079
        [label] => Nike
    )

[1] => Array
    (
        [code] => 1080
        [label] => Adidas
    )    
)

Array
(
[0] => Array
    (
        [manufacturers_id] => 2753
        [manufacturers_name] => Reebok
    )

[1] => Array
    (
        [manufacturers_id] => 2526
        [manufacturers_name] => Adidas
    )

[2] => Array
    (
        [manufacturers_id] => 34
        [manufacturers_name] => Nike
    )

)

我想对数组1的键标签与数组2的键制造商名称进行字符串匹配。多维数组中的最佳方法是什么?

您可以通过数组进行循环

foreach ($multi_array1 as $value) {  
    foreach ($multi_array2 as $value2) {
      If ($value[label] === $value2 [manufacturer_name])
   {}
 }
}

如果您希望通过
标签
制造商名称
进行匹配,那么我建议您通过以下字段重新为数组编制索引:

$by_label = [];
foreach($first_array as $element) {
    $by_label[$element['label']] = $element['code'];
}

$by_name = [];
foreach($second_array as $element) {
    $by_label[$element['manufacturers_name']] = $element['manufacturers_id'];
}

foreach($by_label as $label => $code) {
    print "Label is $label, code is $code, id is {$by_name[$label]}";
}

foreach($by_name as $name => $id) {
    print "Name is $name, id is $id, label is {$by_label[$name]}";
}

只需使用
foreach
即可实现您想要的结果

阵列

$firstArr = array(
        array("code" => 2079, "label" => 'Nike'),
        array("code" => 1080, "label" => 'Adidas')
    );

$secArr = array(
        array("manufacturers_id" => 2753, "manufacturers_name" => 'Reebok'),
        array("manufacturers_id" => 2526, "manufacturers_name" => 'Adidas'),
        array("manufacturers_id" => 34, "manufacturers_name" => 'Nike')
    );
每种技术:

foreach($firstArr as $value){
    if(in_array_sec($value['label'])){
        echo $value['label'].' found in second array.';
    }else{
        echo $value['label'].' not found in second array.';
    }
}

function in_array_sec($val_one){
    global $secArr;
    $flag = false;

    foreach($secArr as $value){
        if($value['manufacturers_name'] == $val_one){
            $flag = true;
            break;
        }
        else
            $flag = false;
    }
    return $flag;
}
结果:

foreach($firstArr as $value){
    if(in_array_sec($value['label'])){
        echo $value['label'].' found in second array.';
    }else{
        echo $value['label'].' not found in second array.';
    }
}

function in_array_sec($val_one){
    global $secArr;
    $flag = false;

    foreach($secArr as $value){
        if($value['manufacturers_name'] == $val_one){
            $flag = true;
            break;
        }
        else
            $flag = false;
    }
    return $flag;
}
Nike在第二阵列中找到

阿迪达斯发现了第二个阵列


两个foreach循环和一个匹配,因为这是一个大小不同的多维数组。