2017-05-30 5 views
0

Ich habe eine Codezeile, die auf meinem lokalen Entwicklungscomputer funktioniert hat, aber nicht (wie erwartet) auf einem anderen Computer funktioniert.php array_unique gibt leeres Array abhängig vom Server zurück

Hier ist meine Debuggen des Anrufs array_unique:

debug("Parameter array size: ".sizeof($parameters)); 
debug("Sorted array size: ".sizeof(array_unique($parameters, SORT_REGULAR))); 
debug_r($parameters); 
debug_r(array_unique($parameters, SORT_REGULAR)); 

(Ich habe die Debug- und debug_r Funktionen zur Ausgabe der Eingangs codiert, aber schön formatiert.)

Die Ergebnisse sind:

Parameter array size: 10 
Sorted array size: 0 
Array ([0] => ~oli_Search_Term [1] => ~oli_Search_Term [2] => ~oli_Search_Term [3] => ~oli_Search_Term [4] => ~tim_Time_From [5] => ~tim_Time_To [6] => ~tim_Time_From [7] => ~tim_Time_To [8] => ~tim_Time_From [9] => ~tim_Time_To) 

Hinweis - es gibt nichts, Ausgang für die endgültige Debug-Aufruf (bestimmt den Inhalt der array_unique ($ Parameter dump, SORT_REGULAR)

0.123.516.

Warum ist das Array leer (und nur auf einer Maschine)?

Die Maschine, auf der die Ausgabe leer ist, läuft PHP Version 5.0.3.

Hinzufügen der folgenden:

vardump($parameters); 

... ergibt:

array (10) {[0] => string (16) "~ oli_Search_Term" [1] => string (16) "~ oli_Search_Term" [2] => string (16) "~ oli_Search_Term" [3] => string (16) "~ oli_Search_Term" [4] => string (14) "~ tim_Time_From" [5] => string (12) "~ tim_Time_To" [6] => string (14) "~ tim_Time_From" [7] => string (12) "~ tim_Time_To" [8] => string (14) "~ tim_Time_From" [9] = > string (12) "~ tim_Time_To"}

+0

Funktioniert gut für mich https://eval.in/807346 –

+0

Funktioniert gut auf meinem anderen PC auch, der PHP Version 5.6.25 läuft. – youcantryreachingme

+0

Können Sie 'var_dump ($ parameters)' bitte in Ihrem Beitrag aktualisieren? –

Antwort

0

Nachdem keine Lösung gefunden wurde Frage oben begann ich zu sehen, ob es einen Workaround gab - um dies anders zu kodieren.

Die Abhilfe, die ich gefunden:

Für alle Fälle:

array_unique($parameters, SORT_REGULAR) 

Ersetzen durch:

array_unique($parameters) 

ich nicht sicher, war das, was das modifizierte Verhalten, obwohl auf einen Blick wäre es schien das gewünschte Ergebnis zu produzieren. Um explizit zu überprüfen, was diese Änderung bewirken würde, habe ich auf das Handbuch verwiesen und Folgendes gefunden:

"Die optionalen Sort_Flags wurden auf SORT_REGULAR gesetzt. Vor 5.2.9 wurde diese Funktion verwendet, um das Array intern mit SORT_STRING zu sortieren. "

So war die Ursache, dass auf dem zweiten Server, auf dem 5.0.3 läuft, das optionale Flag-Argument nicht unterstützt wird.

Verwandte Themen