2009-07-16 5 views

Répondre

4

Vous devriez jeter un coup d'œil à array_filter(). Je pense que c'est exactement ce que vous cherchez.

$_SESSION['items'] = array_filter($_POST['items']); 
+0

cela a fonctionné sans l'isset. Certaines fonctions PHP rendent la vie si facile. Merci mon pote! – payling

+0

À droite, j'ai oublié la conversion automatique et sur le fait que les valeurs de formulaire vides ne sont pas NULL mais des chaînes vides. –

3
# Cycle through each item in our array 
foreach ($_POST['items'] as $key => $value) { 
    # If the item is NOT empty 
    if (!empty($value)) 
    # Add our item into our SESSION array 
    $_SESSION['items'][$key] = $value; 
} 
0

Comme @Till Theis dit, array_filter est certainement le chemin à parcourir. Vous pouvez l'utiliser directement, comme ceci:

$_SESSION['items'] = array_filter($_POST['items']); 

Ce qui vous donnera tous les éléments du tableau qui ne pas résultat false. C'EST À DIRE. vous filtrerez à la fois NULL, 0, faux, etc.

Vous pouvez également transmettre une fonction de rappel pour créer un filtrage personnalisé, comme ceci:

abstract class Util { 
    public static function filterNull ($value) { 
     return isset($value); 
    } 
} 

$_SESSION['items'] = array_filter($_POST['items'], array('Util', 'filterNull')); 

Ceci appellera la filterNull méthode de la classe Util Pour chaque élément du tableau d'éléments, et s'ils sont définis (voir language construct isset()), ils sont conservés dans le tableau résultant.

Questions connexes