[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересный аспект char переменных
Александр Скво
Добрый день знатоки.
Недавно начал заниматься 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'??

Прошу помощи

Спустя 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'??


Заранее большое спасибо.

Спустя 9 минут, 4 секунды (18.03.2010 - 14:56) vasa_c написал(а):
да
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.