Php Alphabet Loop

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

Почему это не работает? пожалуйста скажи мне.

Solutions Collecting From Web of "Php Alphabet Loop"

У вас две проблемы в коде.

Во-первых, строки с одиночными кавычками ( ' ) ведут себя иначе, чем строка с двумя кавычками ( " ). При использовании строк с одиночными кавычками escape-последовательности (кроме \' и \\ ) не интерпретируются и переменные не расходуются. фиксированные как таковые (удаление котировок или их изменение в двойные кавычки):

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

Документация PHP: строки


Во-вторых, ваше состояние никогда не будет оцениваться как TRUE поскольку 'hey' никогда не будет равным одной букве алфавита. Чтобы оценить, находится ли буква в слове, вы можете использовать strpos() :

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

В этом случае важно !== FALSE так как 0 также оценивается как FALSE . Это означает, что если вы удалите !== FALSE , ваш первый символ не будет выводиться.

Документация по PHP: strpos()
Документация по PHP: преобразование в логическое
Документация PHP: Операторы сравнения

Но вы ничего не видите, потому что:

 'hey' != '$i' 

Также, если ваш $ i не был в одинарных кавычках (что делает его значение «$ i» буквально)

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

Вместо тестирования == просмотрите функцию strspn ()