2011-03-30 6 views
1

PHP에서 두 개의 배열을 비교하고 싶습니다. 전반적으로하고 싶지는 않지만 블록 단위로 차단하고 싶습니다. 의
종류 등이PHP 배열 비교

if (a[1] == b[1]){ // do something } 
if (a[2] == b[2]){ // do more } 

내가 어떻게이 ifs의 전체 무리없이 할 수 있습니까? 사전 :

$a = array(1, 2, 3, 5); 
$b = array(1, 1, 1, 1); 
$c = array('something', 'something', 'and so forth'); 
foreach($a as $key => $value){ 
    if($value == $b[$key]){ 
     echo $c[$key]. '<br />'; 
    } 
} 

내 대답에

감사합니다. 2 개의 배열을 비교 한 다음, 몇 개의 코드를 룬다. 일부 키

$keys = array('key1', 'key2'); 
foreach($keys as $value){ 
    if($a[$value] == $b[$value]) 
    { 
    // true 
    } 
    else 
    { 
    // false 
    } 
} 
+0

각 대소 문자마다 매번 다른 코드 블록을 실행하기위한 것입니까? 예를 들어 하나의 대소 문자가 일부 파일 시스템 호출을 트리거하고 다른 일치는 일부 데이터베이스 호출을 트리거합니다. 또는 매번 동일한 코드 블록을 실행합니까? –

+0

똑똑한 질문! 각 블록마다 다른 것을 반향시키고 싶습니다. 또한, 한 블록 이상의 블록이 실행되어야합니다. – tom

답변

1

foreach($a as $key => $value){ 
    if($value == $b[$key]) 
    { 
    // do something 
    } 
    else 
    { 
    break; // stop doing something and break 
    } 
} 

(같은 길이의 두 배열을 가정) 하나 전체 배열 요소를 비교하려면 일치하는 블록에 의해 트리거

균일하게 분포 된 수치 색인이 동일한 배열에서만 작동합니다.

1
for($i=0;$i<sizeof(a);$i++){ 
    if(a[$i]==b[$i]){ 
    //DO SOMETHING 
    } 
} 
0
$a = array(1, 3 , 5 ,6 , 7); 
$b = array(3, 1, 5, 6, 8 ,9); 
$array_size = min(count($a), count($b)); 

for ($i = 0; $i < $array_size; $i++) { 
    if ($a[$i] == $b[$i]) { //you could/should check whether the index is present. 
    //some code 
    } 
} 
을 비교하려면
0
foreach(array_intersect_assoc($a,$b) as $key => $data)){ 
    switch($key){ 
     case 1: 
      //something 
      break; 
     case 2: 
      //something 
      break; 
    } 
} 
0
for ($i=0; $i < count($a) && $i < count($b); ++$i) { 
    if ($a[$i] == $b[$i]){ 
     // this is true 
    } else { 
     // this is false 
    } 
} 
+0

'if ($ a [$ i] == $ b [$ i])' – Gaurav

+0

고정해야합니다. - 고마워요. –

0

트릭을 할해야 루프에 대한 좋은 똑똑한. 다음과 같은 일련의 작업으로 시작할 수 있습니다.

$arrayOfThingsToDo = array("someFunc", "anotherFunc", "yetAnotherFunc"); 
$arrayOfA = array("one", "two", "three"); 
$arrayOfB = array("one", "not two", "three"); 

function doCompare($a, $b, $f) { 
    $len = count($a); 
    for($i = 0; $i < $len; $i++) { 
     if($a[$i] == $b[$i]) { 
     $f[$i](); 
     } 
    } 
} 

행운을 빈다!