2016-04-27 4 views
3

У меня есть два многомерного массивPhp сравнение строк в многомерном массиве

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 с ключом manufacturer_name массива 2. Каков наилучший подход в многомерных массивах?

+1

два цикла foreach и один-один, потому что это многомерный массив с разным размером. –

ответ

0

Вы можете петлиться через массивы.

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

Если вы хотите, чтобы соответствовать по label и manufacturers_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]}"; 
} 
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; 
} 

Результат:

Nike нашел во втором массиве.

Adidas найден во втором массиве.

Смежные вопросы