<?php
$string = "hey";
foreach(range('a','z') as $i)
{
if($string == '$i')
{
echo $i;
}
}
?>
Pourquoi cela ne fonctionne-t-il pas? s'il vous plaît dites-moi.Php Alphabet Loop
<?php
$string = "hey";
foreach(range('a','z') as $i)
{
if($string == '$i')
{
echo $i;
}
}
?>
Pourquoi cela ne fonctionne-t-il pas? s'il vous plaît dites-moi.Php Alphabet Loop
Il est, mais vous ne voyez pas quoi que ce soit parce que:
'hey' != '$i'
Aussi, si votre $ i n'a pas été guillemets simples (ce qui en est la valeur '$ i' littéralement)
'hey' != 'a';
'hey' != 'b';
'hey' != 'c';
...
'hey' != 'z';
Au lieu de tester == jetez un oeil sur la fonction strspn()
Vous avez deux problèmes dans votre code. Tout d'abord, les chaînes de guillemets simples ('
) se comportent différemment des chaînes de guillemets doubles ("
). Lors de l'utilisation de chaînes de guillemets simples, les séquences d'échappement (autres que \'
et \\
) ne sont pas interprétées et les variables ne sont pas utilisées. Cela peut être fixé en tant que tel (enlever les guillemets, ou les changer à guillemets doubles):
$string = 'hey';
foreach(range('a','z') as $i) {
if($string == $i) {
echo $i;
}
}
Deuxièmement, votre condition ne sera jamais évaluée à TRUE
comme 'hey'
n'est jamais égal à une seule lettre de l'alphabet. Pour évaluer si la lettre est dans le mot, vous pouvez utiliser strpos()
:
$string = 'hey';
foreach(range('a','z') as $i) {
if(strpos($string, $i) !== FALSE) {
echo $i;
}
}
Le !== FALSE
est important dans ce cas comme 0
also evaluates to FALSE
. Cela signifie que si vous supprimiez le !== FALSE
, votre premier personnage ne serait pas sorti.
PHP Documentation:
strpos()
PHP Documentation: Converting to boolean
PHP Documentation: Comparison Operators
Bien mieux que ma réponse – meouw
Qu'est-ce que vous essayez de faire réellement? – meouw
ouais, qu'est-ce qui ne fonctionne pas? Vous comparez chaque lettre de l'alphabet à "hé" alors c'est normal que rien ne se passe. – Daan