<?php $string = "hey"; foreach(range('a','z') as $i) { if($string == '$i') { echo $i; } } ?>
Почему это не работает? пожалуйста скажи мне.
У вас две проблемы в коде.
Во-первых, строки с одиночными кавычками ( '
) ведут себя иначе, чем строка с двумя кавычками ( "
). При использовании строк с одиночными кавычками 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 ()