Php字母循环

PHP*_*bie 6 php

<?php
$string = 'hey';

foreach (range('a', 'z') as $i) {
    if ($string == '$i') {
        echo $i;
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?请告诉我.

And*_*ore 25

您的代码中有两个问题.

首先,单引号strings(')的行为与双引号string(")的行为不同.使用单引号字符串时,不会解释转义序列(除\'和之外\\),并且不会消耗变量.这可以固定(删除引号,或将它们更改为双引号):

$string = 'hey';

foreach(range('a','z') as $i) {
  if($string == $i) {
    echo $i;
  }
}
Run Code Online (Sandbox Code Playgroud)

PHP文档:字符串


其次,你的情况永远不会评估TRUE'hey'永远不会等于字母表中的单个字母.要评估字母是否在单词中,您可以使用strpos():

$string = 'hey';

foreach(range('a','z') as $i) {
  if(strpos($string, $i) !== FALSE) {
    echo $i;
  }
}
Run Code Online (Sandbox Code Playgroud)

!== FALSE在这种情况下,重要的是0评估FALSE.这意味着如果您要删除!== FALSE,则不会输出您的第一个字符.

PHP文档:strpos()
PHP文档:转换为布尔
PHP文档:比较运算符


meo*_*ouw 3

是的,但您没有看到任何东西,因为:

'hey' != '$i'
Run Code Online (Sandbox Code Playgroud)

另外,如果您的 $i 不在单引号中(使其值字面意思是“$i”)

'hey' != 'a';
'hey' != 'b';
'hey' != 'c';
...
'hey' != 'z';
Run Code Online (Sandbox Code Playgroud)