|
|
|
| Возможно, что не все об этом знают (в книжках я таких примеров не встречал),
но PHP (в отличие от других языков программирования) весьма лоялен
в отношении использования кириллицы.
Поэтому для патриотически настроенной части населения, уважающей
наш великий и могучий, предлагаю такой тест:
(впрочем, ничто не мешает сделать то же самое и на украинском...:-) )
<?php
// будет ли это работать... ?
$фрукты = array(яблоко=>зеленое,малина=>красная);
//Так - работает !
$кислое = $фрукты['яблоко'];
$сладкая = $фрукты['малина'];
echo "1)$кислое, $сладкая<br>";
//И даже так - тоже работает !
$кислое = $фрукты[яблоко];
$сладкая = $фрукты[малина];
echo "2)$кислое, $сладкая<br>";
// Ну а здесь уже можно не сомневаться...
foreach ($фрукты as $плод => $цвет)
echo "$плод - $цвет<br>";
?>
|
| |
|
|
|
|
|
|
|
для: human
(22.11.2005 в 08:42)
| | Я даже и не догадывался, что так можно ... :-) | |
|
|
|
|
|
|
|
для: human
(22.11.2005 в 08:42)
| | Вообще это не рекомендуется делать поскольку на сервере скрипт просто не будет работать! | |
|
|
|
|
|
|
|
для: Football
(22.11.2005 в 12:22)
| | Это действительно не очень рекомендуется, так как очень много русских кодировок и на сервере может не поддерживать конкретная кодировка...
Кроме того, традиционно все программы пишутся на английском языке - те программисты для которых он не родной избавлены от целого класса ошибок. Например, начинающие англоязычные программисты часто совершают ошибку в цикле
<?php
while($i < 100)
{
// Первый блок кода
$i++
// Второй блок кода
}
?>
|
считая, что цикл обязан закончится как только $i достигнет 100 внутри цикла и "Второй блок кода" уже выполняться не будет. Для них операторы это ещё и слова их родного языка и они подсознательно от них ожидают такого же поведения, которым они привыкли обозначать поведение других людей или явлений. Для нас while - это в первую очередь цикл выполняющийся пока условие true, а затем конструкция языка.
Хотя действительно фича забавная, но как то сбивающая с толку - помнится нам в школе преподавали язык "Алгоритм" - он был на русском языке - я его ни черта не понимал, а BASIC уже как-то лучше понимался, наверное потому что каждый оператор имел строго определённое значение, а английский я тогда не знал. | |
|
|
|
|
|
|
|
для: cheops
(22.11.2005 в 14:07)
| | >> начинающие англоязычные программисты
А почему всё же именно англоязычные ? :) Тема не раскрыта полностью, "аффтар, пЕши иСЧо" ! :) | |
|
|
|
|
|
|
|
для: DDK
(22.11.2005 в 15:17)
| | Хочу подчеркнуть, что все зарезервированные (служебные) слова пишутся в любом случае на английском и никак на понимание синтаксиса не влияют. Перефразируя известную поговорку: "Фортран - он и в Африке - Фортран", можно сказать, что For - он и в Африке (и в России) - тоже For.
Что касается работоспособности на сервере, то этот забавный пример я, естественно, протестировал на сервере и результат оказался успешным !
Не исключено, что на работоспособность влияет set locale, но если она установлена неверно,
то последствия будут гораздо более тяжкими.
Тестировал на локальной машине (Apache под WIn XP), а также - на сервере РосБизнесКонсалтинга (у меня там сайты). У них Apache под Unix'ом (если я ничего не путаю).
Поэтому есть предложение: протестировать его на других хостингах (или локальных машинах).
Что касается пользы, то русскоязычным именованием переменных можно существенно повысить осмысленность алгоритмов и резко сэкономить на комментариях (русских, однако !!!). Ну а для писателей, пишущих книжки про PHP для начинающих - раздолье для творчества: можно оперировать не только яблоками-грушами, но и пивом с воблой.
Однажды мне пришлось для этого написать для процессоров Моторолы собственный ассемблер с компоновщиком, которые бы понимали русские имена. В результате программы стали очень смахивать на стихи Пушкина (ил Маяковского)...:-)
Но есть и недостатки: если вы захотите отправить свой скрипт в англоязычный мир (или китайцам), то вас не поймут. Впрочем, использование в текстах смеси "английского с нижегородским" - тоже в подобных случаях не есть хорошо...:-) | |
|
|
|
|
|
|
|
для: human
(22.11.2005 в 19:07)
| | Да будет везде работать, т.к. идентификаторы для PHP - ASCII коды, он не понимать русский или английский слово:) | |
|
|
|
|
|
|
|
для: isset
(22.11.2005 в 21:27)
| | >Да будет везде работать, т.к. идентификаторы для PHP - ASCII
>коды, он не понимать русский или английский слово:)
Хочу сделать уточнение:
ASCII-символы в именах переменных не могут быть любыми.
Можно применять только такие:
ASCII-символы от 48 до 57 (0x30-0x39) это символы десятичных цифр
ASCII-символы от 65 до 90 (0x41-0x5a) прописные латинские
ASCII-символ 95 (0x5f) подчерк
ASCII-символы от 97 до 122(0x61-0x7a)строчные латинские
ASCII-символы от 127 до 255 (0x7f-0xff) (сюда попадают русские буквы в любых
однобайтовых кодировках, например, DOS-866, Win-1251, КОИ-8)
Для проверки корректности имени можно использовать такое регулярное выражение:
"[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"
И еще одно ограничение: первый символ после доллара не должен быть цифрой. | |
|
|
|
|
|
|
|
для: cheops
(22.11.2005 в 14:07)
| | Полностью солидарен. Помниться, я где то сталкивался с программным кодо, где необходимо указывать переменные на русском и их параметры на русском. С трудом получалось.
Просто пример:
$apple = 12;
$яблоко = 12;
-----------------
Наше яблоко, так и хочеться прочитать яблок, а потом в коде и напишешь, на автомате. | |
|
|
|