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

时间:2016-04-27 03:36:03

标签: php arrays multidimensional-array

我有两个多维数组

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的键 manufacturer_name 进行字符串匹配。多维数组中最好的方法是什么?

3 个答案:

答案 0 :(得分:0)

你可以通过数组循环。

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

答案 1 :(得分:0)

如果您想按labelmanufacturers_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]}";
}

答案 2 :(得分:0)

只需使用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技术:

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;
}

<强>结果:

  

耐克在第二阵中找到了。

     

阿迪达斯在第二阵中找到了。