Ich vermisse etwas, oder habe einen Fehler in PHP 5.6.17 gefunden.Ich habe ein Array, das error_log(), aber nicht print_r() bricht, und funktioniert perfekt sonst
Ich habe ein Array von Daten, die, wenn ich es durch error_log() (edit: Mit print_r ($ Array, True), damit ich eine Zeichenfolge übergeben) bekomme ich;
Array
(
[
Wo würde ich normalerweise erwarten zu sehen;
Array
(
[person_id]=> 123456
)
Es ist, als ob die erste Array Tastenausgabe wird beendet, aber der erste Array-Schlüssel ist ein leerer Sub-Array mit nichts Ungewöhnliches über sie.
Seltsamerweise, wenn ich print_r() verwende, druckt es das Array gut, und alle Array-basierten PHP-Funktionen, die Arrays bearbeiten oder über sie iterieren, haben kein Problem mit dem Array.
Einige meiner Schlüssel sind so;
Array
(
[per_roles] => Array
(
)
[per_roles_retrieved] =>
[per_cache] => Array
(
)
[*member] =>
[*addresses] =>
[*marketing_preferences] =>
[*suppliers] =>
[_table] => address
[id] => 454545
[*exists] => 1
[*_related_objects] => Array
(
)
[*_related_object] => Array
(
)
[first_name] => John
[middle_name] =>
[last_name] => Smith
)
Was ist das Problem, und sind es die Sternchen?
Ich habe die Antwort gefunden. Das Problem besteht darin, dass das Array von einem Objekt stammt, das als Array gecastet wird. Geschützte Eigenschaften dieses Objekts werden bei der Umwandlung in ein Array mit ihren Schlüsseln mit Nullzeichen versehen, um sie zu "schützen". Diese Null-Zeichen führen dazu, dass error_log (einmal durch print_r ($ var, true)) davon ausgegangen wurde, dass das Ende der Zeichenkette erreicht ist, sodass die Ausgabe gestoppt wird. Um es zu beheben, müssen Sie diese Null-Zeichen ersetzen oder stattdessen print_r verwenden. –