2011-03-30 165 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個數組,然後標出一些代碼。通過匹配

+0

是否每次爲每個匹配的情況運行不同的代碼塊(即一個匹配情況觸發某些文件系統調用,另一個匹配觸發某些數據庫調用等)?或者每次運行相同的代碼塊? – 2011-03-30 18:48:59

+0

聰明的問題!我想回應每個區塊的不同之處。另外,有些事情需要運行多個塊 – tom 2011-03-30 18:57:15

回答

1

要由一至整個數組元素的一個比較(假定相同的長度的兩個陣列)

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

如果要比較一些鍵

$keys = array('key1', 'key2'); 
foreach($keys as $value){ 
    if($a[$value] == $b[$value]) 
    { 
    // true 
    } 
    else 
    { 
    // false 
    } 
} 
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 2011-03-30 18:47:24

+0

修復了它 - 謝謝 – 2011-03-30 18:49:45

0

一個良好的醇for循環應該做的伎倆。你可以從一系列事情開始:

$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](); 
     } 
    } 
} 

祝你好運!