Php字母循环

时间:2010-02-13 21:38:46

标签: php

<?php
$string = 'hey';

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

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

3 个答案:

答案 0 :(得分:25)

您的代码中存在两个问题。

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

$string = 'hey';

foreach(range('a','z') as $i) {
  if($string == $i) {
    echo $i;
  }
}
  

PHP Documentation: Strings


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

$string = 'hey';

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

!== FALSE在这种情况下非常重要0 also evaluates to FALSE。这意味着如果您删除!== FALSE,则不会输出您的第一个字符。

  

PHP Documentation: strpos()
  PHP Documentation: Converting to boolean
  PHP Documentation: Comparison Operators

答案 1 :(得分:2)

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

'hey' != '$i'

此外,如果您的$ i不是单引号(从字面上看它的价值'$ i')

'hey' != 'a';
'hey' != 'b';
'hey' != 'c';
...
'hey' != 'z';

答案 2 :(得分:0)

代替测试==查看strspn()函数