2010-07-22 4 views
2

i가 하나의 어레이는 제 2 어레이, 하지만 동일한 키와 동일한 값에 포함되어 있는지 확인하고자하는 제 2 어레이 (키 + 값)에 포함되는, 배열과 비교 하나 개 배열

(필요하지 하나 개의 배열의 모든 키와 값)이 두 번째에 있는지 확인 동일하게

내가 지금까지 수행 간단한 일입니다

function checkSameValues($a, $b){ 

     foreach($a as $k1 => $v1){         
      if($v1 && $v1 != $b[$k1]){ 
       return false; 
       break;          
      } 
     } 
     return true; 
    } 

이 거기에 간단한 (빠른) 이것을 확인하는 방법?

감사

답변

3

나는

$array1 = array("a" => "green", "b" => "blue", "c" => "white", "d" => "red"); 
$array2 = array("a" => "green", "b" => "blue", "d" => "red"); 
$result = array_diff_assoc($array2, $array1); 
if (!count($result)) echo "array2 is contained in array"; 
0
function checkSameValues($a, $b){ 
    if (in_array($a,$b)) return true; 
    else return false; 
} 
+0

내가 같은 키와를 확인해야 동일한 값, in_array 값만 검사하십시오! –

1

무엇에 대한 ...

$intersect = array_intersect_assoc($a, $b); 
if(count($intersect) == count($b)){ 
    echo "yes, it's inside"; 
} 
else{ 
    echo "no, it's not."; 
} 

array_intersect_assoc

array_intersect_assoc()는 모든 인수에 존재하는 array1의 모든 값을 포함하는 배열을 반환합니다.

+0

나를 위해 동일하게 작동하지 않습니다, 다른 결과를 얻을 –

+0

나는 그것을 수정하고 테스트 ... 그것은 나를 위해 작동합니다. – Cristian

0

이 분명히에만 검사 깊이 = 1을 할 것입니다,하지만 쉽게 재귀 적으로 적용 할 수 있습니다 :

// check if $a2 is contained in $a1 
function checkSameValues($a1, $a2) 
{ 
    foreach($a1 as $element) 
    { 
     if($element == $a2) return true; 
    } 
    return false; 
} 

$a1 = array('foo' => 'bar', 'bar' => 'baz'); 
$a2 = array('el' => 'one', 'another' => $a1); 

var_dump(checkSameValues($a2, $a1)); // true