2009-09-22 9 views
0

Je suis en train d'écrire simplement une simple instruction si PHP qui vérifie si un champ personnalisé a quelque chose entré ou s'il a été laissé vide. Quand il est vide, il est destiné à ne rien imprimer sur la page, si quelque chose est défini dans le champ personnalisé, alors il devrait créer un élément li avec un tag à l'intérieur.PHP si déclaration problème lors de la vérification de la valeur de la variable

ici est mon code à ce jour:

<ul class="externalLinks"> 
<? $emptycheck = get('linkname',2,1,0); 

if (isset($emptycheck)){ ?> 
    <li><a href="<? echo get('targethref',2,1,0); ?>"><? echo get('linkname',2,1,0);?></a></li> 
<? } else { '' } ?> 

<li><a href="<? echo get('PDFdownload'); ?>">Download a PDF of this project</a></li> 
</ul> 

Les champs personnalisés dans ce cas sont définies par l'administrateur wordpress (via le plugin flutter). La question que j'ai est simplement que si les champs personnalisés sont laissés en blanc un vide

<li><a></a></li> 

est créé. Get ('linkname', 2,1,0) renvoie le contenu du champ de manière évidente (cette partie fonctionne).

Toutes les idées seraient grandement appréciées.

Merci, Jannis

+1

Si vous envisagez d'utiliser ce projet sur un serveur différent, vous voudrez probablement changer jnylen

Répondre

5

Tout simplement parce que une variable est vide ne signifie pas qu'il est pas isset(). Vous souhaitez vérifier si c'est empty() ou non. Pour être clair: isset() vous indiquera simplement si le nom de la variable existe dans la table de symboles. empty() retournera vrai quand une variable est vide.

Selon la documentation:

Les choses suivantes sont considérés comme vide:

  • "" (une chaîne vide)
  • 0 (0 comme un entier)
  • "0" (0 sous forme de chaîne)
  • NULL
  • FALSE
  • array() (tableau vide)
  • var $ var; (Une variable déclarée, mais sans valeur dans une classe)

Modifié: vide() est une sorte de spécial, et ne fonctionne que sur une variable régulière. Vous ne pouvez pas tester une expression (par exemple, la valeur de retour d'une fonction) avec empty(). Ceci est clairement documenté sur la page de manuel.

+0

+1 - J'utilise simplement strlen pour vérifier, je ne connaissais pas cette fonction, car je n'en ai jamais eu besoin. Je vous remercie. –

+0

Merci, cela fonctionne parfaitement. – Jannis

+0

@ gumbo: vous avez raison. Modification ... – timdev

1

Vous définissez emptycheck de $, peu importe, si la valeur de retour est falsy vous pouvez

if ($emptycheck) { 
} else { 
} 

Sinon, il sera toujours évaluée à true. Ou inversez la logique avec un opérateur de négation (!) Si c'est l'inverse.