Question

Je ne faisais que la navigation sur un forum et quelqu'un a demandé à un fichier PHP qu'ils avaient trouvé sur le web. Il a plusieurs endroits comme celui-ci dans le code:

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

Je l'ai toujours pensé que les supports sont nécessaires pour joindre ce que vous voulez faire si la condition est vraie. Y at-il une autre solution, comme si elle est sur la même ligne que vous ne le faites pas?

Il y a aussi une autre ligne comme celui-ci: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

Mon instinct est de dire cela ne fonctionnerait pas, mais je aussi ne sais pas s'il est un fichier PHP obsolète et il travaillait?

Était-ce utile?

La solution

vous pouvez faire si d'autre comme celle-ci des déclarations:

<?php
if ($something) {
   echo 'one conditional line of code';
   echo 'another conditional line of code';
}


if ($something) echo 'one conditional line of code';

if ($something)
echo 'one conditional line of code';
echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something
?>


et vous pouvez également écrire si - autre dans une autre syntaxe:

<?php
if ($something):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
elseif ($somethingElse):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
else:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
endif;
?>


avec la syntaxe alternative, vous pouvez également tomber du mode d'analyse syntaxique comme ceci:

<?php
if ($something):
?>
one conditional line of code<br />
another conditional line of code
<?php
else:
   echo "it's value was: $value<br />\n";
?>
another conditional line of code
<?php
endif;
?>

Mais cela devient vraiment désordre très vite et je ne le recommande son utilisation (sauf peut-être pour le modèle logique).


et de le rendre complet:

<?php
$result = $something ? 'something was true' : 'something was false';
echo $result;
?>

equals

<?php
if ($something) {
   $result = 'something was true';
} else {
   $result = 'something was false';
}
echo $result;
?>

Autres conseils

Pour aller dans un peu plus en détail, la raison pour laquelle les accolades sont facultatives est que la syntaxe ressemble à:

if(CONDITION) BLOCK
[elseif(CONDITION) BLOCK]
[else BLOCK]

BLOC peut être une seule instruction:

foo();

ou il peut être un groupe fermé accolades des états:

{
    foo();
    bar();
}

A mon avis

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

est valable, mais beaucoup plus difficile à lire que:

if ($REMOTE_ADDR == "") {
    $ip = "no ip"; 
} else {
    $ip = getHostByAddr($REMOTE_ADDR);
}

9 ans et je suis surpris personne ne l'est mentionné opérateur ternaire :

$ip = ($REMOTE_ADDR == "") ? "no ip" : getHostByAddr($REMOTE_ADDR);

Beaucoup plus claire pour l'attribution à mon humble avis -. Parce qu'elle conduit avec la variable étant affectée à, comme pour l'affectation des variables habituelles

croisillons (non entre parenthèses) sont facultatifs en PHP, comme dans la plupart syntaxe C-like. Peut-être que vous pensez de Perl; ils sont là doivent, pour cette forme de syntaxe si.

La chose du côlon est une forme de la structure de commande de remplacement qui supporte PHP. Je déteste ça, mais certaines personnes (en particulier les concepteurs de système modèle, apparemment) aime.

Oui, à l'exclusion des accolades est permis, bien que plusieurs fois je l'ai entendu 2 raisons de ne pas utiliser cette syntaxe:

  1. Il est plus difficile à lire. Moins évident à un autre programmeur.
  2. Si jamais vous Wany ajouter quelque chose à l'intérieur du cas, vous devez ajouter les accolades qui est plus difficile après alors quand vous êtes le premier codage puisque la plupart des éditeurs ajouteront l'accolade fermante pour vous.

En outre, oui, la syntaxe du côlon est valide. Les alternatives peuvent être trouvées ici: http://php.net/manual /en/control-structures.alternative-syntax.php

brackets are needed to enclose what you want to do if the condition is true

Je ne peux pas penser à une langue qui a besoin de cette

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top