2 つの多次元 PHP 配列の違いを出力する再帰関数を作成しています。このコードの目的は、jpeg ヘッダーの違いを確認して、adobe bridge cs3 が評価情報を jpg ファイル内に保存する方法を判断することです。
eclipse - zend デバッガー IDE を使用してコードをシングルステップ実行すると、最初の if ステートメントが false (つまり、どちらの値も配列ではない) でも、後続の elseif ステートメントが実行されないように見えます。以下に関数を添付します。
注: コメントに基づく元の投稿以降の変更
デフォルトの level= '' を追加しました
if{} elseif{} ブロック間のコメントを
削除しました else;を削除しました。機能を持たないブロックの最後に < および > 記号をエンコードして、山かっこがコードに表示されるようにしました
function array_diff_multi($array1,$array2,$level=''){
$keys = array_keys($array1);
foreach($キーを$キーとして)
{
$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 ."=>" . $value1 . "配列として、" と比較して。$value2 ."<br>";
}
elseif($value1 != $value2){ // 値が一致しません。違いを出力します
"<br>" を印刷します。$レベル。$key ."=>" . $value1 ." != " . $value2 ."<br>";
}
}
そうしないと{
"<br>" を印刷します。$レベル。$キー . "array2 に存在しません";
}
}
}