Ich möchte ein Array filtern, das durch Konvertierung von XML in ein Array erstellt wird. Ich möchte alle übergeordneten Schlüssel von Arrays mit Schlüssel = 0 und einem leeren Wert (zB "InvalidKey") entfernen, aber nicht diejenigen mit einem benutzerdefinierten Namen und keinen Wert (zB "Spalte"). Ich habe bereits array_filter verwendet (auch in Kombination mit array_map), aber diese Funktionen filtern zu wenig oder zu viele Informationen aus dem Array. Ich habe auch versucht, eine loopable-Funktion zu erstellen, um zu überprüfen, ob das aktuelle Array einen Schlüssel von 0 und einen leeren Wert hat, aber ich weiß nicht, wie Sie den übergeordneten Schlüssel des aktuellen Arrays erhalten, zB:Leere Array-Elemente eines mehrdimensionalen Arrays ausfiltern
Array
(
[InvalidKey] => Array
(
[0] => *NULL*
)
);
key($arrInput) = 0;
parent::key($arrInput) = "InvalidKey";
So
, wie aus zu bekommen:
Array
(
[test] =>
[demo] => 524018
[column] =>
[xml] => Array
(
[Header] => Array
(
[0] => Array
(
[ValidKey] => Array
(
[0] => 1234
)
[InvalidKey] => Array
(
[0] =>
)
)
)
[Body] => Array
(
[0] => *NULL*
)
[Footer] => Array
(
[0] => Array
(
[ValidKey] => Array
(
[0] => I am valid
)
[MoreValidKey] => Array
(
[0] => I am valid too
)
[InvalidKey] => Array
(
[0] =>
)
)
)
)
)
an:
Array
(
[test] =>
[demo] => 524018
[column] =>
[xml] => Array
(
[Header] => Array
(
[0] => Array
(
[ValidKey] => Array
(
[0] => 1234
)
)
)
[Footer] => Array
(
[0] => Array
(
[ValidKey] => Array
(
[0] => I am valid
)
[MoreValidKey] => Array
(
[0] => I am valid too
)
)
)
)
)
PS: Die verwendeten Array Schlüsselnamen sind variabel. Zur Vereinfachung habe ich "(In) ValidKey" verwendet. Das Array kann so tief wie möglich sein, daher kann ich mit 2 for loops nicht auskommen.
Mögliches Duplikat [? Wie leere Werte von mehrdimensionalen Arrays in PHP entfernen] (https://stackoverflow.com/questions/10214531/how-to-remove-empty-values -from-multidimensional-array-in-php) – Companjo