2011-03-30 120 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](); 
     } 
    } 
} 

祝你好运!