2014-11-04 2 views
1

2 개의 다차원 배열이 있습니다.배열 차이를 얻는 방법

배열 1 가능한 이름 중 일부 함유 :

Array2 
(
    [0] => Array 
     (
      [id_x] => 3 
      [x_name] => Name-3 
      [id_l] => 4 
     ) 

    [1] => Array 
     (
      [id_x] => 4 
      [x_name] => Name-4 
      [id_l] => 8 
     ) 

    [2] => Array 
     (
      [id_x] => 5 
      [x_name] => Name-5 
      [id_l] => 7 
     ) 

    [3] => Array 
     (
      [id_x] => 6 
      [x_name] => Name-6 
      [id_l] => 5 
     ) 

) 

배열 1 [] [idName에는 = 배열 ​​2 [] [id_x] 및 배열 1 : 사용 가능한 모든 이름을 포함

Array1 
(
[0] => Array 
    (
     [quantity] => 13 
     [idname] => 3 
     [x_name] => Name-3 
    ) 

[1] => Array 
    (
     [quantity] => 5 
     [idname] => 4 
     [x_name] => Name-4 
    ) 

) 

및 배열 2 [] [x_name] = Array2 [] [x_name] (ofc ...)

내 원하는 출력은 Array1에 포함되지 않은 Array2의 모든 요소입니다. so :

Arraydesire 
(

    [0] => Array 
     (
      [id_x] => 5 
      [x_name] => Name-5 
      [id_l] => 7 
     ) 

    [1] => Array 
     (
      [id_x] => 6 
      [x_name] => Name-6 
      [id_l] => 5 
     ) 

) 

나는 array_intersect로 작동하지만 didnt 작업. 도움 주셔서 감사합니다.

+0

http://php.net/manual/en/function.array 배열 2의 현재 요소의 값이 배열 1에서 발견되는 경우, 요소를 삭제 -diff.php – DarkBee

답변

2

중첩 된 foreach 루프를 사용할 수 있습니다.

foreach($array2 as $key => $value){ 
    foreach($array1 as $val){ 
     if($value['x_name']==$val['x_name']){ 
      unset($array2[$key]); 
      $break; 
     } 
    } 
} 
var_dump($array2); 

라이브 예 : http://codepad.viper-7.com/eOOUi6

+0

감사합니다. 그것의 진짜 도움이되는! – TomLi

0

array_diff (http://php.net/manual/en/function.array-diff.php)를 살펴 보자,

$array1 = array("a" => "green", "red", "blue", "red"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_diff($array1, $array2); 
print_r($result); 

Array 
(
    [1] => blue 
) 

당신이 배열 2를 통해 실행하고 보는 루프를 작성해야 할 수도 있음을 실패하면 그 배열 1에서, 자사의 새로운 배열에 추가 할 경우 해당 배열 출력

0
<?php 
$arr1 = Array(); 
$arr1[] = Array('quantity' => 13, 'idname' => 3, 'x_name' => 'Name-3'); 
$arr1[] = Array('quantity' => 5, 'idname' => 4, 'x_name' => 'Name-4'); 


$arr2 = Array(); 
$newTemp = Array(); 
$arr2[] = Array('id_x' => 3, 'x_name' => 'Name-3', 'id_l' => 4); 
$arr2[] = Array('id_x' => 4, 'x_name' => 'Name-4', 'id_l' => 8); 
$arr2[] = Array('id_x' => 5, 'x_name' => 'Name-5', 'id_l' => 7); 
$arr2[] = Array('id_x' => 6, 'x_name' => 'Name-6', 'id_l' => 5); 

$newTemp = $arr2; 
foreach ($arr1 as $subArray1) { 
    foreach ($arr2 as $key => $subArray2) { 
     if ($subArray1['x_name']==$subArray2['x_name']) { 
      unset($newTemp[$key]); 
      break; 
     } 
    } 
} 
print_r($arr1); 
print_r($arr2); 
print_r($newTemp); 
?>