Недавно начал заниматься php и столкнулся с очень интерсным вопросом, не могли ли бы вы помочь мне его понять...
При выполении скрипта
for ($i='a';$i<='z';++$i) {
print $i;
}
Цикл останавливается когда в переменной лежит 'za', следовательно условие не удовлетворяется и 'za'>'z'
Почему тогда при изменении скрипта
for ($i='a';$i<='az';++$i) {
print $i;
}
Цикл останавливается когда в перменной лежит 'b'
Вопрос: Какие критерии сравния чаровых перменных и почему 'za'>'z'
и самое интерсное почему 'b'>'az'? Получается услвоие проверяет по первой букве?
Заранее спасибо
Спустя 5 минут, 23 секунды (18.03.2010 - 14:01) vasa_c написал(а):
Вы пыхе нет чаровых переменных, там только стринги, и хрен их переберёшь таким циклом.
А условия сравнения - алфавитные, как в любом словаре.
А условия сравнения - алфавитные, как в любом словаре.
Спустя 5 минут, 6 секунд (18.03.2010 - 14:06) Guest написал(а):
Сорри - точно нет char...
но почему Вы говорите что перебрать нельзя - попробуйте сами запустить...переборка идет...
Причем когда доходит до 'z' переходит на 'aa' потом 'ab'
Меня вот мучает вопрос по каким критeрия 'b'>'az'??
Прошу помощи
но почему Вы говорите что перебрать нельзя - попробуйте сами запустить...переборка идет...
Причем когда доходит до 'z' переходит на 'aa' потом 'ab'
Меня вот мучает вопрос по каким критeрия 'b'>'az'??
Прошу помощи
Спустя 19 минут, 10 секунд (18.03.2010 - 14:25) vasa_c написал(а):
Цитата |
Меня вот мучает вопрос по каким критeрия 'b'>'az'?? |
Повторюсь, по тем же самым, по которым в любом словаре слова на букву "Б", стоят позже слов на букву "А" - по критериям алфавитного порядка (lexical comparison).
То, что ++ для строки имеет такое хитрож.е поведение не повод его использовать - попытайтесь сделать по другому.
http://www.php.net/manual/en/language.oper...s.increment.php
Цитата |
PHP follows Perl's convention when dealing with arithmetic operations on character variables and not C's. For example, in Perl 'Z'+1 turns into 'AA', while in C 'Z'+1 turns into '[' ( ord('Z') == 90, ord('[') == 91 ). Note that character variables can be incremented but not decremented and even so only plain ASCII characters (a-z and A-Z) are supported. |
Спустя 21 минута, 44 секунды (18.03.2010 - 14:47) Guest написал(а):
Cпасибо уважаемый vasa_c! Вы помогли мне разобраться...
Напоследок один вопрос получается что когда 'b' сравнивается с 'az' - то сравненние идет по первой букве в пер. 'az'??
Заранее большое спасибо.
Напоследок один вопрос получается что когда 'b' сравнивается с 'az' - то сравненние идет по первой букве в пер. 'az'??
Заранее большое спасибо.
Спустя 9 минут, 4 секунды (18.03.2010 - 14:56) vasa_c написал(а):
да