【问题标题】:Php string comparision in multidimensional array多维数组中的php字符串比较
【发布时间】:2016-08-21 03:49:12
【问题描述】:

我有两个多维数组

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 的键 label 与数组 2 的键 ma​​nufacturer_name 进行字符串匹配。多维数组中的最佳方法是什么?

【问题讨论】:

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

标签: php arrays multidimensional-array


【解决方案1】:

只需使用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;
}

结果:

Nike 在第二个数组中找到。

在第二个数组中找到阿迪达斯。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      你可以循环遍历数组。

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

      【讨论】:

        猜你喜欢
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多