11
votes

Paramètres facultatifs à la fonction de liste PHP

J'ai une ligne comme celle-ci dans mon code: xxx

Les 3 derniers paramètres peuvent être ou ne pas être là. Existe-t-il une fonction similaire à la liste qui ignorera automatiquement ces derniers paramètres si le tableau est plus petit que prévu?


4 commentaires

Liste n'est pas une fonction.


"Ignorer" dans le sens de "ne pas attribuer quoi que ce soit" ou dans le sens de "attribuer null"?


Vous ne devriez pas vouloir cela. Lorsque vous définissez une variable par nom dans une portée, cette variable doit toujours être créée. Que devriez-vous arriver avec les variables vides? Ne devraient-ils pas être créés? Ça va gâcher le code suivant ...


Je veux juste qu'ils soient nuls. BTW, la communauté PHP est beaucoup plus rapide pour répondre à ces questions par rapport aux personnes Java !!


3 Réponses :


5
votes

Ajoutez simplement quelques tuyaux de rechange à la fin de la chaîne:

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user.'||||');


1 commentaires

Stackoverflow.com/a/15365504/851643 semble une bien meilleure solution



44
votes
list($user_id, $name, $limit, $remaining, $reset)
    = array_pad(explode('|', $user), 5, null);

0 commentaires

15
votes

Si vous craignez que la solution de SDC ressent "Hacky"; Ensuite, vous pouvez définir des valeurs par défaut et utiliser:

$user = '3|username';

$defaults = array(NULL, NULL, 10, 5, FALSE);
list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user) + $defaults;

var_dump($user_id, $name, $limit, $remaining, $reset);


1 commentaires

Exactement ce que je veux réaliser. Merci Mark.