Jest to taki prosty problem, ale dokumentacja PHP nie wyjaśnia, dlaczego tak się dzieje.PHP array_diff weirdness
mam ten kod:
var_dump($newattributes); var_dump($oldattributes);
var_dump(array_diff($newattributes, $oldattributes));
Dla briefity mam zamiar pominąć dużej części struktury Jestem rzeczywiście przy użyciu (ponieważ każdy z nich jest 117 elementów długo) i przyciąć do sprawy.
Mam jedną macierz nazywa $newattributes
który wygląda tak:
array(117){
// Lots of other attributes here
["deleted"] => int(1)
}
a inny o nazwie $oldattributes
który wygląda tak:
array(117){
// Lots of other attributes here
["deleted"] => string(1) "0"
}
Która wygląda inaczej, prawda? Według array_diff
: nie. Wyjście dostaję od array_diff
jest:
array(0) { }
Czytałem stronę dokumentacji jednak mówi:
Dwa elementy są uznawane za równe wtedy i tylko wtedy jeśli (string) $ elem1 === (ciąg) $ elem2. W słowach: gdy reprezentacja ciągów jest taka sama.
I nie jestem pewien, jak "1" może sprzeciwić się "0".
Więc widzę pewne zastrzeżenie z array_diff
Nie brałem pod uwagę?
Dobry pytanie, jasne, dobrze zadawane i nie za długie i za dużo kodu. Więcej ludzi powinno robić to w ten sposób! +1 – Hidde
To nie powinno się zdarzyć, i rzeczywiście [to nie dla mnie] (http://ideone.com/jDeUd). – Jon
@Jon Dzięki za test, zajrzę więcej w moją kompilację PHP – Sammaye