2014-01-03 4 views
0

Я пытаюсь сравнить два массива и взять данные из Array2 и поместить его в Array1, если соответствующий индекс в Array1 пуст. Вот пример массивов. Второй массив имеет данные, которые первый массив не имеет.PHP, сравнивающий многомерные массивы

Array(
    [Customer] => Array(
     [sales_associate] => 
     [store] => 
    ) 
    [CustomerPersonalInformation] => Array(
     [first_name] => FirstName 
     [middle_initial] => 
     [last_name] => Lastname 
     [gender] => 
    ) 
    [CustomerContactInformation] => Array(
     [primary_phone] => (111)111-1111 
     [email] => [email protected] 
     [street_address] => 
     [city] => 
     [state] => 
     [zip] => 
     [county] => 
    ) 
    [Marketing] => Array(
     [accepts_calls] => 
     [accepts_emails] => 
     [best_contact_time] => 
    ) 
) 
Array(
    [Customer] => Array(
     [sales_associate] => Me 
     [store] => There 
    ) 
    [CustomerPersonalInformation] => Array(
     [first_name] => FirstName 
     [middle_initial] => E 
     [last_name] => Lastname 
     [gender] => 
    ) 
    [CustomerContactInformation] => Array(
     [primary_phone] => (111)111-1111 
     [email] => [email protected] 
     [street_address] => 
     [city] => 
     [state] => 
     [zip] => 
     [county] => 
    ) 
    [Marketing] => Array(
     [accepts_calls] => 
     [accepts_emails] => 
     [best_contact_time] => 
    ) 
) 

Я не могу придумать, как перемещаться по массивам, поскольку индексы не являются числами. Я знаю, что мне нужно использовать петли foreach, но я, похоже, не могу об этом подумать. Вот последнее, что я попытался (неудачно):

foreach($firstArray as $element) { 
    foreach($element as $value) { 
     echo $value; 
     echo $secondArray[$element][$value]; 
    } 
} 
+1

Что такое ожидаемый результат? –

+0

@AmalMurali Я бы ожидал, что это будет каждый элемент каждого массива. Но он работает только на Array1 – mrowland

+1

Вы смотрите на array_replace_recursive()? –

ответ

1

Loop через второй массив и проверить, если элемент присутствует в первом массиве, как это:

foreach($secondArray as $elementKey => $elementContent) { 
    if(! isset($firstArray[$elementKey]) || empty($firstArray[$elementKey])) { 
     $firstArray[$elementKey] = $elementContent; 
    } 
    foreach($elementContent as $ecKey => $ecValue) { 
     if(! isset($firstArray[$elementKey][$ecKey]) || empty($firstArray[$elementKey][$ecKey])) { 
      $firstArray[$elementKey][$ecKey] = $ecValue; 
     } 
    } 
} 
+0

Это именно то, что я хотел. Благодаря! – mrowland

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