2013-08-13 2 views
1

의 병합 후 키 I은 어레이 (1)와 어레이 (2)를 사용하여 어레이 (3) 여과 만들려고하고있다.필터 배열 한 어레이

ARRAY 1

Array ( 
      [title] => value 
      [title2] => value2 
      [title3] => value3 
    ) 

ARRAY 2

Array ( 
      [0] => Array ([id] => 20 [title2] => value2 [otherColumn1] => otherValue1) 
      [1] => Array ([id] => 21 [title4] => value4 [otherColumn3] => otherValue3) 
    ) 
교차 방법 적용한 후

원하는 결과 :

어레이 (3)를

Array ([title2] => value2) 

은 지금까지 나는 배열 1, 2이 일치하지 않는 구조를 가지고 있기 때문에 결과를 얻을 수 없습니다입니다. 다른 기술을 시도했지만 구조 차이로 인해 비교할 수 없습니다.

if (!empty($data1['array2'][0])) { 

       foreach ($data1['array2'] as $key) { 

//     $filtered= array_intersect($array1,$key); 
        // print_r($key); 
       } 
       // $filtered= array_intersect($array1,$data1['array2']);// if i use $data1['array2'][0] it filters fine but just one row 

       // print_r($filtered); 
      } 

모든 도움을 주시면 감사하겠습니다. 고맙습니다.

+0

'array1'과'array2'의 차이점은'[title] => value'입니다. '[title2] => value2'를 어떻게 기대하십니까? –

+0

thankyou @Hashem Qolami 잘못된 기능을 사용하고있었습니다. 그러나 여전히 문제는 여전히 존재합니다. 구조가 다를 때 어떻게 그것의 교차점을 얻을 수 있습니까? – Mubarak

+0

두 배열 모두 title2와 title3을 포함하고 있습니다. 왜 필터링 된 배열에 title2 만 있습니까? –

답변

3

감안할 때 배열 :

$arr = array('title' => 'value', 'title2' => 'value2', 'title3' => 'value3'); 
$arr2 = array (
     0 => array ('id' => '20', 'title2' => 'value2', 'otherColumn1' => 'otherValue1'), 
     1 => array ('id' => '21', 'title4' => 'value4', 'otherColumn3' => 'otherValue3')); 

이 함께 필터링 된 배열을 얻을 수 있습니다 :

$merged = call_user_func_array('array_merge', $arr2); 
$filtered = array_intersect($arr, $merged); 

을 당신이 대신 사용할 수 있습니다 단지 키에 따라 교차 할 경우

$filtered = array_intersect_key($arr, $merged); 
+1

+1 아마'array_intersect_assoc' 또는'array_intersect_key'가 필요합니다. – deceze

+0

@deceze - 이유가 확실하지 않습니다. 그게 내 뜻대로라면 내 결과가 그대로 남아 있었어. –

+0

아니요, OP가 키 + 값 또는 키와 교차하려고하는 것 같습니다. 교차 값만이 오 탐지를 유발할 수 있습니다. – deceze

-1

다음과 같은 방식으로 구조적 차이를 제거 할 수 있습니다.

$arr1 = array (
     0 => array('title' => 'value', 'title2' => 'value2', 'title3' => 'value3')); 
$arr2 = array (
     0 => array ('id' => '20', 'title2' => 'value2', 'otherColumn1' => 'otherValue1'), 
     1 => array ('id' => '21', 'title4' => 'value4', 'otherColumn3' => 'otherValue3'));