J'ai maintenant maintenant pour utiliser une valeur de cookie si vous n'existe pas autrement, utilisez une valeur par défaut:
$default_carat_min = $_COOKIE["diamond-search_caratMin"] ? $_COOKIE["diamond-search_caratMin"] : "0.25";
6 Réponses :
php 5.3 Ajout d'un court formulaire pour le Opérateur ternaire : qui évalue au côté gauche si le côté gauche est vrai et évalue au côté droit autrement. P> avant 5,3 Cependant, vous devez utiliser la forme longue. p> p>
Bon sang, je viens de manquer! @ 5.2.14
Notez que ce code lancera une erreur (e_notice doit être exactement) lorsque le cookie n'existe pas.
peut facilement être corrigé avec émetteur ()
@CROZIN vrai, mais tous les exemples de l'OP vont-ils. Les avis ne sont pas des erreurs, au fait.
$ def = (Isset ($ _ cookie ['"diamant']))? $ _Cookie ['"diamant']: 0,25;
Ils ne sont pas des erreurs que parce que PHP est la preuve du PHP - ils devraient être. ;)
Je pense que la question est subjective. Personnellement, je pense qu'il vaut mieux être verbeux et il n'y a rien de mal avec votre première forme car il est complètement évident ce que votre code fait. p>
Ce n'est pas comme si vous êtes limité sur le nombre de lignes ou de taille que vous pouvez utiliser. Vous sauvez vraiment beaucoup en économisant quelques coups de clé? P>
Si c'est vraiment un problème, essayez peut-être de réduire le nombre de variables que vous utilisez en premier lieu serait une meilleure solution p>
Ce ne serait subjectif que si j'avais demandé quelle méthode était meilleure. Mais il n'y a rien de subjectif à propos de la longueur des personnages d'une manière par rapport à une autre.
Oui il y a. Le fait que la longueur n'aurait pas d'importance, codez la "lisibilité" plus importante que d'économiser 50 caractères.
@Galen, si je devrais ou non le faire peut être une question subjective. Mais ce n'est pas la question que j'ai posée. Si j'avais demandé cela, que les gens ne pouvaient se disputer toute la journée. Mais j'ai demandé quel chemin était le plus court. Cela a une réponse qui peut être mesurée. Il n'y a pas de débat sur la question de savoir si une réponse a plus de caractères qu'une autre réponse.
@Galan, je ne veux pas sembler impoli, mais je pense que vous êtes. À mon avis 20, des affectations de ligne simples courtes dans une séquence sont plus faciles à lire que 20 si code> déclarations. C'est la raison même pour laquelle je voulais faire cela, était de rendre le code plus facile à suivre. Cependant, je pensais que le code est plus facile à lire de cette façon est subjectif et vous me dites qu'il est plus facile de lire une autre manière est également subjective. Je n'ai pas commencé ce fil pour une conversation subjective sur laquelle est le meilleur. J'ai commencé à avoir une réponse concrète sur la façon de l'écrire comme je me sens plus facile à comprendre.
Vous pouvez utiliser une fonction:
function set_default(&$var, $default) { return isset($var) ? $var : $default; } $default_carat_min = set_default($_COOKIE["diamond-search_caratMin"], "0.25");
Je suis d'accord avec la réponse de Cfreak. Je préférerais que le code soit "évident".
Pour ajouter à cela, bien que vous ne voulez pas avoir à rechercher votre code pour chaque instance de inclure ensuite le fichier de configuration et p> Vous pouvez également utiliser l'opérateur ternaire p> 0.25 code> (ou d'autres valeurs), donc je recommande Création d'un fichier de configuration Si vous n'en avez pas un et l'ajout de cette ... p>
+1 Pour la recommandation d'utiliser un fichier de configuration pour définir les valeurs par défaut.
La question contenait un indice que de nombreuses variables devaient être vérifiées pour s'assurer qu'ils avaient une valeur par défaut et que personne ne l'a fait référence. C'est ce que je vais faire maintenant:
Vous pouvez définir une gamme de valeurs par défaut d'abord et commodément en boucle à travers cela. Cet exemple vérifie simplement le GLOBAL $ _COOKIE GLOBAL: P>
$defaults = Array( '_COOKIE' => Array( 'diamond-search_caratMin' => "0.25" , 'diamond-search_caratMax' => "2.00" ) , 'myOtherArray' => Array( 'value_1' => 10 , 'value_2' => 20 ) , 'myString' => 'Hello' , 'myFloat' => 1.0 ); foreach ($defaults as $vk => $vv) { if (is_array($vv)) { if (!isset($$vk)) { $$vk = Array(); } foreach ($vv as $dk => $dv) { if (!isset($$vk[$dk])) { $$vk[$dk] = $dv; } } } else { if(!isset($$vk)) { $$vk=$vv; } } }
Pour éviter l'avis électronique Utilisation:
$default_carat_min = @$_COOKIE["diamond-search_caratMin"] ?: "0.25";
Merci pour cela! J'aime cette approche parce que cela semble plus propre. +1
Je ne sais pas php, mais vous pouvez sûrement écrire une fonction d'assistance telle que GetcookieRefault, appelé comme:
par défaut_carat_min = getcookieordfault ("0.25") code>