PHP - so entfernen Sie leere Einträge eines Arrays rekursiv?
Muss ich entfernen, leere Einträge auf der mehrstufigen arrays. Jetzt kann ich Einträge entfernen mit leeren sub-arrays, aber nicht leere arrays... verwirrt, also ich... ich denke, der code wird helfen, besser zu erklären...
<?php
/**
*
* This function remove empty entries on arrays
* @param array $array
*/
function removeEmptysFromArray($array) {
$filtered = array_filter($array, 'removeEmptyItems');
return $filtered;
}
/**
*
* This is a Callback function to use in array_filter()
* @param array $item
*/
function removeEmptyItems($item) {
if (is_array($item)) {
return array_filter($item, 'removeEmptyItems');
}
if (!empty($item)) {
return true;
}
}
$raw = array(
'firstname' => 'Foo',
'lastname' => 'Bar',
'nickname' => '',
'birthdate' => array(
'day' => '',
'month' => '',
'year' => '',
),
'likes' => array(
'cars' => array('Subaru Impreza WRX STi', 'Mitsubishi Evo', 'Nissan GTR'),
'bikes' => array(),
),
);
print_r(removeEmptysFromArray($raw));
?>
Ok, dieser code entfernen "nickname", "Geburtstag", aber nicht " entfernen "Fahrräder", haben ein leeres array.
Meine Frage ist... Wie Sie die "bikes" - Eintrag?
Beste Grüße,
Sorry für mein Englisch...
- Warum willst du Sie entfernen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diesen code:
$fn = __FUNCTION__
und dann rufen wir $fn, es würde funktionieren, was die Funktion benannt wurde. Eine alternative ist natürlich seien Sie vorsichtig, wenn Sie benennen Sie Funktionen und stellen Sie ersetzte die richtige - Funktion namens vorkommen. Vor allem, wenn Sie beim umbenennen einer Funktion zur Vermeidung von name-clashes, wenn die Funktion existiert noch, aber als eine völlig andere Funktion.Ich denke, das sollte dein problem lösen.
Hier ist meine Lösung, es entfernt genau festgelegten Liste von leeren Werten rekursiv:
Können Sie es verwenden, wie diese:
Hinweis, es entfernt leere sub-arrays, wenn Sie pass
[]
als einen der Werte.Wenn Sie möchten, array_filter arbeiten rekursiv, Sie brauchen werden, um sicherzustellen, dass die nachfolgenden Anrufe Bearbeiten können, die tiefer geschachtelte Elemente des Arrays. Kurz: Sie müssen es passieren Referenz: