Das ist so ein einfaches Problem, aber das PHP-Dokument erklärt nicht, warum es passiert.PHP Array_diff Seltsamkeit
Ich habe diesen Code:
var_dump($newattributes); var_dump($oldattributes);
var_dump(array_diff($newattributes, $oldattributes));
Für briefity ich große Teile der Struktur verzichten werde ich tatsächlich verwenden bin (da jeder 117 Elemente lang ist) und auf den Fall schneiden.
Ich habe ein Array namens $newattributes
, die wie folgt aussieht:
array(117){
// Lots of other attributes here
["deleted"] => int(1)
}
Und ein anderes genannt $oldattributes
, die wie folgt aussieht:
array(117){
// Lots of other attributes here
["deleted"] => string(1) "0"
}
Welche unterschiedlichen richtig aussieht? Nach
array_diff
: nein. Der Ausgang I von
array_diff
erhalten ist:
array(0) { }
ich die Dokumentation Seite gelesen haben, aber es sagt:
Zwei Elemente werden als gleich betrachtet, wenn und nur wenn (string) $ elem1 === (string) $ elem2. In Worten: wenn die Zeichenfolgendarstellung gleich ist.
Und ich bin mir nicht sicher, wie "1" gleich "0" objektieren kann.
Also sehe ich einen Vorbehalt mit array_diff
Ich habe nicht berücksichtigt?
Gut Frage, klar, gut gefragt und nicht zu lang und zu viel Code. Mehr Leute sollten es so machen! +1 – Hidde
Dies sollte nicht passieren, und zwar [es tut mir nicht] (http://ideone.com/jDeUd). – Jon
@Jon Danke für den Test, ich werde mehr in meine PHP Build – Sammaye