Php Alfabe Döngü

3 Cevap
<?php
$string = "hey"; 

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

Neden bu çalışmıyor? lütfen söyle.

3 Cevap

Siz kodunuzu iki sorun var.

İlk olarak, tek-tırnak dizeleri (') farklı çift tırnak dize daha davranmaya ("). Tek-tırnak dizeleri kullanırken, yorumlanmaz ve değişken sarf edilmez (\' ve \\ dışında) dizileri kaçış. Bu (tırnak çıkarmadan, ya da çift tırnak bunları değiştirme) gibi tespit edilebilir:

$string = 'hey';

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

PHP Documentation: Strings


'hey' alfabenin tek bir harf eşit asla İkinci olarak, durumunuz TRUE olarak değerlendirmek asla. Harf kelime ise değerlendirmek için kullanabilirsiniz strpos() :

$string = 'hey';

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

0 de FALSE değerlendirir gibi !== FALSE bu durumda önemlidir. Bu kaldırmak olsaydı !== FALSE, ilk karakter çıktısı olmaz demektir.

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

Öyle ama bir şey çünkü göremiyoruz:

'hey' != '$i'

Ayrıca eğer $ i (o $ i 'anlamıyla değer verme) tek tırnak değildi

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

Test yerine == strspn() fonksiyonu üzerinde bir göz var