Ifadesi yanlış olsa bile, ilk se idam değil PHP'nin elseif deyimi

0 Cevap php

Ben 2 multildimensional php diziler arasındaki farklılıkları yazdırmak için bir özyinelemeli işlev yazıyorum. Bu kodun amacı, Adobe Bridge CS3 jpg dosyası içinde değerlendirmesi bilgi tasarrufu nasıl deteremine jpeg başlıklar arasında farkı görmek için.

Ben Tutulma kullanarak kod boyunca tek atlama olduğum zaman - zend debugger ide, bu deyimi (yani ne değerler bir dizidir) false bile ilk olsa, sonraki elseif ifadeleri idam asla görünür. Bu fonksiyon aşağıdaki takılır.

Note: Changes since original post based on comments
Added a default level= ''
Removed comments between the if{} elseif{} blocks
Removed an else; at the end of the block that had no function Encoded the < and > symbols so angle bracket would show in my code

function array_diff_multi($array1,$array2,$level=''){
  $keys = array_keys($array1);
  foreach($keys as $key)
  {
    $value1 = $array1[$key];
    if(array_key_exists($key,$array2) ){
      $value2 = $array2[$key];

      if (is_array($value1) && is_array($value2)){     // Check if they are both arrays, if so recursion is needed
        array_diff_multi($value1,$value2,$level . "[ " . $key . " ]");
      }
      elseif(is_array($value1) != is_array($value2)){  // Recursion is not needed, check if comparing an array to another type
        print "<br>" . $level . $key ."=>" . $value1 . "as array, compared to  ". $value2 ."<br>";
      }
      elseif($value1 != $value2){                      // the values don't match, print difference
        print "<br>" . $level . $key ."=>" . $value1 ." != " . $value2 ."<br>";
      }
    }
    else{                                              
      print "<br>" . $level. $key . "does not exist in array2";
    }
  }
}

0 Cevap