【问题标题】:PHP array comparingPHP数组比较
【发布时间】:2011-03-30 18:40:02
【问题描述】:

我想比较 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 个数组,然后运行一些代码。由匹配的块触发

【问题讨论】:

  • 它是否打算每次为每个匹配案例运行不同的代码块(即一个匹配案例触发一些文件系统调用,另一个匹配触发一些数据库调用等)?还是每次都运行相同的代码块?
  • 聪明的问题!我想为每个块回显不同的东西。此外,有时需要运行多个块

标签: php arrays web compare


【解决方案1】:
for($i=0;$i<sizeof(a);$i++){
  if(a[$i]==b[$i]){
    //DO SOMETHING
  }
}

【讨论】:

    【解决方案2】:

    想要一一比较整个数组元素(假设两个数组长度相同)

    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
       }
    }
    

    【讨论】:

      【解决方案3】:
      $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
         }
      }
      

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

      【讨论】:

        【解决方案4】:
         foreach(array_intersect_assoc($a,$b) as $key => $data)){
             switch($key){
                 case 1:
                     //something
                     break;
                 case 2:
                     //something
                     break;
             }
         }
        

        【讨论】:

          【解决方案5】:
          for ($i=0; $i < count($a) && $i < count($b); ++$i) {
              if ($a[$i] == $b[$i]){
                // this is true
              } else {
                // this is false
              }
          }
          

          【讨论】:

          • 应该是if($a[$i] == $b[$i])
          【解决方案6】:

          一个好的 ol 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]();
                }
             }
          }
          

          祝你好运!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多