PHP数组比较

时间:2011-03-30 18:40:03

标签: php arrays web compare

我想在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个数组,然后编辑一些代码。由匹配

的块触发

6 个答案:

答案 0 :(得分: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 :(得分:1)

for($i=0;$i<sizeof(a);$i++){
  if(a[$i]==b[$i]){
    //DO SOMETHING
  }
}

答案 2 :(得分: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
   }
}

这仅适用于具有相同均匀分布的数字索引的数组。

答案 3 :(得分:0)

 foreach(array_intersect_assoc($a,$b) as $key => $data)){
     switch($key){
         case 1:
             //something
             break;
         case 2:
             //something
             break;
     }
 }

答案 4 :(得分:0)

for ($i=0; $i < count($a) && $i < count($b); ++$i) {
    if ($a[$i] == $b[$i]){
      // this is true
    } else {
      // this is false
    }
}

答案 5 :(得分:0)

循环好的ol应该可以解决问题。您可以从一系列事情开始:

$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]();
      }
   }
}
祝你好运!