70 votes

if bloc à l'intérieur de l'instruction echo ?

Je soupçonne que ce n'est pas autorisé car je reçois une erreur "Erreur d'analyse : erreur de syntaxe, T_IF inattendu...". Mais je n'ai pas trouvé de moyen d'accomplir mon objectif. Voici mon code :

get_countries();

  foreach($countries as $value){
    echo ''.$value.'';
  }
  ?>

Ce code affiche une liste de pays dans un élément de sélection et défini les États-Unis comme par défaut. Malheureusement, cela ne fonctionne pas...

184voto

Brad F Jacobs Points 12725

Vous voudrez utiliser le un opérateur ternaire qui agit comme une instruction raccourcie SI/SINON :

echo ''.$value.'';

19voto

Frxstrem Points 5384

Vous pouvez toujours utiliser la syntaxe ( ? : ) (appelée l'opérateur ternaire - merci à Mark de me l'avoir rappelé :) ).

Si est vrai, l'instruction sera évaluée comme . Sinon, elle sera évaluée comme

Par exemple:

$quatorze = 14;
$douze = 12;
echo "Quatorze est ".($quatorze > $douze ? "plus que" : "pas plus que")." douze";

Cela équivaut à:

$quatorze = 14;
$douze = 12;
if($quatorze > 12) {
  echo "Quatorze est plus que douze";
}else{
  echo "Quatorze n'est pas plus que douze";
}

10voto

Ed Mazur Points 1100

Utilisez un opérateur ternaire :

echo ''.$value.'';

Et tant que vous y êtes, vous pourriez utiliser printf pour rendre votre code plus lisible/gérable :

printf('%s',
    $value,
    $value == 'États-Unis' ? 'selected="selected"' : '',
    $value);

7voto

En faveur de la lisibilité, cela devrait ressembler à

get_countries();
  foreach($countries as $value) {
    $selected ='';
    if($value=='États-Unis') $selected ='selected="selected"'; 
    echo ''.$value.'';
  }
?>

Le désir de tout mettre sur une seule ligne est une maladie, mec. Écrivez de manière distincte.

Mais il y a une autre manière, une meilleure. Il n'est pas nécessaire d'utiliser echo du tout. Apprenez à utiliser templates. Préparez d'abord vos données, et affichez-les uniquement lorsqu'elles sont prêtes.

Partie logique métier :

$countries = $myaddress->get_countries();
$selected_country = 1;    

Partie modèle :

 "selected">

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X