2 다차원 PHP 배열 간의 차이점을 출력하는 재귀 함수를 작성하고 있습니다. 이 코드의 목적은 adobe bridge cs3이 jpg 파일에서 등급 정보를 저장하는 방법을 결정하기 위해 jpeg 헤더 간의 차이를 확인하는 것입니다.PHP ifif 문은 초기 if 문이 거짓 일지라도 실행되지 않습니다.
내 eclipse-zend 디버거 ide를 사용하여 코드를 한 단계 씩 실행할 때 초기 if 문이 false (즉, 값이 배열이 아님)인데도 후속 elseif 문은 실행되지 않습니다. 이 기능은 아래에 첨부되어 있습니다.
참고 : 의견
에 따라 원래의 게시물 이후의 변경은 기본 수준 = ''는 다른 제거됨} {경우 ELSEIF {} 블록
사이
제거 주석을 추가; 한 블록의 끝에서 각도 브래킷이 정확하게 귀하의 질문에 대답하지 않습니다
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"; } } }
'$ array1'과'$ array2'에 사용하는 샘플을 줄 수 있습니까? – thetaiko
어쩌면 misspoke - value1과 value2가 모두 배열 인 경우 첫 번째 if 문은 true로 평가되고 elseifs는 무시됩니다. 한 값이 배열이고 다른 값이 그렇지 않으면 첫 번째 elseif가 트리거되어야합니다. 또한 (나는) is_array가 true/false를 반환 할 것이므로 "! =="대신 "! =="를 사용하는 것이 좋습니다. –
무엇이 실행됩니까? –