Αφαίρεση κενών στοιχείων πίνακα

Ορισμένα στοιχεία στον πίνακα μου είναι κενές συμβολοσειρές ανάλογα με το τι έχει υποβάλει ο χρήστης. Πρέπει να αφαιρέσω αυτά τα στοιχεία. Έχω αυτό:

foreach($linksArray as $link)
{
    if($link == '')
    {
        unset($link);
    }
}
print_r($linksArray);

Αλλά δεν λειτουργεί. Το "$$linksArray" εξακολουθεί να έχει κενά στοιχεία. Δοκίμασα επίσης να το κάνω με τη συνάρτηση empty(), αλλά το αποτέλεσμα είναι το ίδιο.

Λύση

Καθώς έχετε να κάνετε με έναν πίνακα συμβολοσειρών, μπορείτε απλά να χρησιμοποιήσετε την array_filter(), η οποία τα χειρίζεται όλα αυτά για εσάς:

print_r(array_filter($linksArray));

Λάβετε υπόψη ότι αν δεν παρέχεται callback, όλες οι καταχωρήσεις του πίνακα που είναι ίσες με FALSE (δείτε converting to boolean) θα αφαιρεθούν. Έτσι, αν πρέπει να διατηρήσετε στοιχεία που είναι π.χ. ακριβές αλφαριθμητικό '0', θα χρειαστείτε ένα προσαρμοσμένο callback:

// PHP < 5.3
print_r(array_filter($linksArray, create_function('$value', 'return $value !== "";')));

// PHP 5.3 and later
print_r(array_filter($linksArray, function($value) { return !is_null($value) && $value !== ''; }));
Σχόλια (13)
$linksArray = array_filter($linksArray);

"Αν δεν παρέχεται callback, όλες οι καταχωρήσεις εισόδου που είναι ίσες με FALSE θα αφαιρεθούν." -- http://php.net/manual/en/function.array-filter.php

Σχόλια (3)
foreach($linksArray as $key => $link) 
{ 
    if($link === '') 
    { 
        unset($linksArray[$key]); 
    } 
} 
print_r($linksArray); 
Σχόλια (3)