web-dev-qa-db-fra.com

PHP - Si la variable n'est pas vide, echo du code HTML

Je voudrais afficher du code HTML si une variable n'est pas vide, sinon je ne souhaite rien afficher.

J'ai essayé ce code mais ne fonctionne pas:

<?php 
    $web = the_field('website');
    if (isset($web)) {
?>
       <span class="field-label">Website: </span><a href="http://<?php the_field('website'); ?>" target="_blank"><?php the_field('website'); ?></a> 
<?php
    } else { 
        echo "Niente";
    }
?>
37
if (!empty($web)) {
?>
    <span class="field-label">Website:  </span><a href="http://<?php the_field('website'); ?>" target="_blank"><?php the_field('website'); ?></a> 
<?php
} else { echo "Niente";}

http://us.php.net/manual/en/function.empty.php

78
Rodney Folz

isset retournera true même si la variable est "". isset ne renvoie false que si une variable est null. Ce que vous devriez faire:

if (!empty($web)) {
    // foo
}

Ceci vérifiera que la variable n'est pas vide.

J'espère que cela t'aides

16
vanneto

Utilisez simplement if ($web). Ceci est true si la variable a une valeur vérité.

Vous n'avez pas besoin de isset ou empty puisque vous savez que la variable existe, puisque vous venez de la définir à la ligne précédente.

10
deceze

Je ne vois pas comment if(!empty($var)) peut créer de la confusion, mais je conviens que if ($var) est plus simple. - vanneto 8 mars 12 à 13:

Parce que empty a pour objectif spécifique de supprimer les erreurs pour les variables inexistantes. Vous ne voulez pas supprimer les erreurs sauf si vous en avez besoin. Le Guide définitif de PHP isset et empty explique le problème en détail. - deceze ♦ 9 mars 12 à 1:24

Se focaliser sur la partie de suppression d'erreur, si la variable est un tableau où une clé en cours d'accès peut ou non être défini :

  1. if($web['status']) produirait:

    Notice : Index non défini: statut

  2. Pour accéder à cette clé sans provoquer d’erreurs:
    1. if(isset($web['status']) && $web['status']) (la deuxième condition n'est pas testée si la première est FALSE) OU
    2. if(!empty($web['status'])).

Cependant, comme deceze ♦ a souligné , a vérité la valeur d'une variable définie fait !empty redondant, mais vous devez toujours vous rappeler que PHP considère les exemples suivants comme FALSE:

  • null
  • '' ou ""
  • 0.0
  • 0
  • '0' ou "0"
  • '0' + 0 + !3

Donc, si zéro est un statut significatif que vous souhaitez détecter, vous devez utiliser des comparaisons de chaînes et de chiffres:

  1. Sans erreur et zéro détection:

    if(isset($web['status'])){
      if($web['status'] === '0' || $web['status'] === 0 ||
         $web['status'] === 0.0 || $web['status']) {
        // not empty: use the value
      } else {
        // consider it as empty, since status may be FALSE, null or an empty string
      }
    }
    

    La condition générique ($web['status']) doit être laissé à la fin de la déclaration entière.

2
CPHPython
if(!empty($web))
{
   echo 'Something';
}
0
hohner

Vous utilisez isset, ce que isset fait est de vérifier si la variable est définie ('existe') et n'est pas NULL. Ce que vous recherchez, c'est empty, qui vérifie si une variable est vide ou non, même si elle est définie. Pour vérifier ce qui est vide et ce qui ne l'est pas, jetez un coup d'œil à:

http://php.net/manual/en/function.empty.php

Consultez également http://php.net/manual/en/function.isset.php pour ce que isset fait exactement, afin que vous compreniez pourquoi il ne fait pas ce que vous attendez faire.

0
pbond
if($var !== '' && $var !== NULL)
{
   echo $var;
}
0
dev verma

j'espère que cela fonctionnera aussi, essayez d'utiliser "is_null"

<?php 
$web = the_field('website');
if (!is_null($web)) {
?>

....html code here

<?php
} else { 
    echo "Niente";
}
?>

http://php.net/manual/en/function.is-null.php

j'espère que ça vous va bien.

0
H. Tom

Votre problème réside dans votre utilisation de the_field(), qui est pour Advanced Custom Fields, un plugin wordpress).

Si vous voulez utiliser un champ dans une variable, vous devez utiliser ceci: $web = get_field('website');.

0
photocurio