A: 

This doesn't exactly answer your question, but I think Adobe Bridge saves metadata in dotfiles in the same directory as the files. For example, sort information is saved in a .bridgesort file.

Skilldrick
Thanks for the tip. Somehow the ratings I created in bridge are viewable in VISTA even though I don't copy the dot files to the new directory when I copy the jpg.
DarwinIcesurfer
A: 

The only way that all the elseifs would be skipped is if the two variables are not arrays and are equal.

Ignacio Vazquez-Abrams
I find it odd that even the first elseif isn't reached. Is there something due to recursion is causing the odd behavior? When I highlight the statement inside the first if statement it shows that the result is false (neither is an array), but the subsequent elseif is not reached.
DarwinIcesurfer
But if neither of them is an array then the second `elseif` is false.
Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams
Ignacio - I mistyped my example. It has been corrected in the original question
DarwinIcesurfer
The `if` does not check if *either* of them is an array, it checks if *both* of them are arrays. Your description does not match your code.
Ignacio Vazquez-Abrams
Ignacio - Comments in the code have been updated (edited) to clarify the intent
DarwinIcesurfer
*Nothing* you've done thus far contradicts my answer.
Ignacio Vazquez-Abrams
+2  A: 

could it be because you have

else;

at the end...?

Try removing that or turning that into 'real code'

MrSoundless
I removed the else; line. The function still behaves the same way. The problem occurs after it has launched the recursive function to start the comparison of the first arrays ie item1[0][n] vs item2[0][n] where the value of both are now integers.
DarwinIcesurfer
A: 

It works fine for me here. I put your function (with the tiny difference of adding a default value of '' to the level parameter), and these two arrays:

$a1 = array('foo', 'bar', 2, array('baz', '3', 4, array(54,45)));
$a2 = array('faz', 'bar', 4, array('buz', '3', 5, 54));

And got this output:

0=>foo != faz

2=>2 != 4

[ 3 ]0=>baz != buz

[ 3 ]2=>4 != 5

[ 3 ]3=>Arrayas array, compared to  54

Perhaps your starting arrays are not what you think they are...?

ircmaxell
Adding the default value was a good suggestion. When I step through my code the $array1 variable continues to show the ORIGINAL array rather than the second level. Do I need to do something different in php to pass the array by value?
DarwinIcesurfer
Huh? You mean `$level` shows the next level, but $array1 stays the same? That shouldn't happen. Is the code you posted above EXACTLY what you have? If so, try disabling your debugger... If not, update with the exact code (Because what you posted actually works fine)...
ircmaxell
The debugger was behaving oddly. I shutdown and restarted eclipse. Now it appears that my code is working properly, but there is no difference between the arrays I was comparing!
DarwinIcesurfer
I assumed that the metadata would be different between the 2 files, but apparently that is not the case. In any case, we now have a useful function to quickly point out the difference between 2 multidimensional arrays. Thanks for your help and the other expert's as well that pointed out formatting change suggestions and the use of a default value
DarwinIcesurfer