2010-02-13 75 views
4
<?php 
$string = "hey"; 

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

爲什麼這不起作用?請告訴我。Php字母循環

+0

什麼是你真正想幹什麼? – meouw 2010-02-13 21:46:20

+0

是的,有什麼不工作?你將字母表中的每個字母與「嘿」進行比較,所以沒有任何反應是正常的。 – Daan 2010-02-13 21:51:39

回答

2

它,但你看不到任何東西,因爲:

'hey' != '$i' 

另外,如果您的$我是不是在單引號(使它的價值「$我」直譯)

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

你的代碼有兩個問題。

首先,單引號字符串(')的行爲與雙引號字符串(")不同。當使用單引號字符串時,轉義序列(除\'\\之外)不會被解釋,並且不會消耗變量。這個問題可以這樣(去掉引號,或將其更改爲雙引號):

$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

比我的回答更好 – meouw 2010-02-13 21:48:32