我正在编写一个递归函数来打印出 2 个多维 php 数组之间的差异。此代码的目的是查看 jpeg 标头之间的差异,以确定 adobe bridge cs3 如何在 jpg 文件中保存评级信息。
当我使用我的 eclipse - zend 调试器 ide 单步执行代码时,似乎即使初始 if 语句为假(即,两个值都不是数组),后续 elseif 语句也不会执行。函数附在下面。
注意:自原始帖子以来基于评论的更改
添加了默认级别=''
删除了 if{} elseif{} 块之间的评论
删除了一个 else; 在没有函数的块的末尾对 < 和 > 符号进行了编码,因此尖括号将显示在我的代码中
函数array_diff_multi($array1,$array2,$level=''){ $keys = array_keys($array1); foreach($keys 作为 $key) { $value1 = $array1[$key]; if(array_key_exists($key,$array2)){ $value2 = $array2[$key]; if (is_array($value1) && is_array($value2)){ // 检查它们是否都是数组,如果是则需要递归 array_diff_multi($value1,$value2,$level . "[ " . $key . " ]"); } elseif(is_array($value1) != is_array($value2)){ // 不需要递归,检查是否将数组与另一种类型进行比较 打印“<br>”。$级别。$key ."=>" 。$ 价值 1 。“作为数组,与”相比。$value2 ."<br>"; } elseif($value1 != $value2){ // 值不匹配,打印差异 打印“<br>”。$级别。$key ."=>" 。$value1 ." != " . $value2 ."<br>"; } } 别的{ 打印“<br>”。美元级别。$键。“在array2中不存在”; } } }