Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Получить первый символ строки

Сообщения:  [1-10]   [11-20] 

 
 автор: Евгений Петров   (14.09.2005 в 20:29)   письмо автору
 
   для: isset   (14.09.2005 в 20:26)
 

Если честно мне только что смешно стало. :) Ладно из чувства уважения к вам и авторам мануала соглашусь с вами, хотя исходя из того что не на всех хостингах есть php выше какой то там версии все же рекомендую использовать [].

   
 
 автор: isset   (14.09.2005 в 20:26)   письмо автору
 
   для: Евгений Петров   (14.09.2005 в 20:22)
 

Кто будет делать такие комментарии? Только если по этому коду учат или кто-то так и не смог понять программирование....

Вывод:
[] - используется для обращения к элементам массива
{} - используется для обращения к символу строки
Это правило закреплено мануалом.

   
 
 автор: Евгений Петров   (14.09.2005 в 20:22)   письмо автору
 
   для: isset   (14.09.2005 в 20:18)
 

В таком случае если будет стоять комент "меняем второй символ в строке $var на случайное число от 0 до 9 используя функцию rand", то каждый нормальный программист поймет, что $var - это строка.
Офтоп!

   
 
 автор: isset   (14.09.2005 в 20:18)   письмо автору
 
   для: Евгений Петров   (14.09.2005 в 20:12)
 

хм, если честно не знал что к элементу массива можно обращаться из фигурных скобок....
Но все же , в мануале прописано, [] используется для массивов, {} используется для строк.

> Вы противоречите сами себе. Вы мне пол часа доказываете что если б там стояли фигурные скобки то из этого можно было бы сделать заключение что это строка и в тот же момент говорите мне что программист должен знать что это за переменная и что же на самом деле
Здесь немного другое, вас опять подвела логика. Каждый нормальный программист следует по мануалу, поэтому если стоит $var{1} , программист сразу поймет что здесь строка, т.к. в мануале четко прописано, что {} следует использовать только для строк.

   
 
 автор: Евгений Петров   (14.09.2005 в 20:12)   письмо автору
 
   для: isset   (14.09.2005 в 20:01)
 

Ну хорошо. С вашим вариантом согласен, а теперь представьте что вы видите все тоже самое, но только вместо квадратных скобок стоят фигурные. Вы наивно поверите что это строки? Ведь для массивов так же можно использовать фигурные скобки. И все равно вам придется чесать по всему коду и смотреть что же это за переменная. Может быть такой как я специально написал там фигурные скобки вместо квадратных а може и вовсе не знал, что можно использовать квадратные.
это (как работает $var[1] =rand(0,9) ) должен знать программист
Вы противоречите сами себе. Вы мне пол часа доказываете что если б там стояли фигурные скобки то из этого можно было бы сделать заключение что это строка и в тот же момент говорите мне что программист должен знать что это за переменная и что же на самом деле.

   
 
 автор: isset   (14.09.2005 в 20:01)   письмо автору
 
   для: Евгений Петров   (14.09.2005 в 19:55)
 

Ок, немного я не так написал, ошибся:
Представьте вам надо будет разобрать 200 кб пхп-кода. И вы видите запись типа $var[1] =rand(0,9);
Переменная $var генерируется на лету (к примеру из бд берется название и потом $$varname) А теперь догадайтесь, $var[1] =rand(0,9); меняет элемент с индексом 1 или же второй символ в строке?

Комментарии типа "меняем второй символ в строке $var на случайное число от 0 до 9 используя функцию rand" это шиза, коммент объясняет алгоритм и совершенно не должен объяснять все шаги (это (как работает $var[1] =rand(0,9) ) должен знать программист)

Представьте нет комментариев, старый программист умер уже, к БД у вас доступа нет, исходники редактировать вы тоже не можете, как тогда определить?

В мануале имеется замечание, использование [] для строк не рекомендуется. Мануалу уж можно поверить.

[поправлено модератором]

   
 
 автор: Евгений Петров   (14.09.2005 в 19:55)   письмо автору
 
   для: isset   (14.09.2005 в 19:45)
 

С логикой у меня нормально! Из записи $myarr['f'] = rand(0,9) любой нормальный программист сразу скажет, что это НЕ строка а ассоциативный массив следовательно $myarr[1] =rand(0,9); меняет элемент с индексом 1.

Другой рограммист может не понять строка это или массив
По этому могу сказать две вещи:
Во первых переменная $myarr сама за себя говорит что это массив (от. англ array - массив), а во вторых есть такое понятие как комментарии, в которых можно извлеч много полезной информации для себя.

   
 
 автор: isset   (14.09.2005 в 19:45)   письмо автору
 
   для: Евгений Петров   (14.09.2005 в 19:37)
 

Представьте вам надо будет разобрать 200 кб пхп-кода. И вы видите запись типа $myarr['f'] =rand(0,9);
Переменная $myarr генерируется на лету (к примеру из бд берется название и потом $$varname) А теперь догадайтесь, $myarr[1] =rand(0,9); меняет элемент с индексом 1 или же второй символ в строке?

Т.е. речь не идет о том что пхп спутает, сделает из строки массив. Нет. Другой рограммист может не понять строка это или массив

[поправлено модератором]

   
 
 автор: Евгений Петров   (14.09.2005 в 19:37)   письмо автору
 
   для: isset   (14.09.2005 в 18:25)
 

Ну и что что проверил? Код я привел хотя бы для того чтобы "другой программист" мог удостовериться в этом.

   
 
 автор: isset   (14.09.2005 в 18:29)   письмо автору
 
   для: isset   (14.09.2005 в 18:25)
 

Я лишь добавлю еще кусок из маунала:

 Текущая версия PHP воспринимает второе присваивание как определение смещения строки, поэтому $a станет "f", результат же этого автоматического преобразования следует, однако, рассматривать как неопределенный. В PHP 4 для доступа к символам строки был введен новый синтаксис фигурных скобок, используйте этот синтаксис вместо вышеприведенного:


И http://php.rinet.ru/manual/ru/language.types.string.php#language.types.string.substr

Замечание:  Для обеспечения обратной совместимости, вы по-прежнему имеете возможность использовать в тех же целях скобки массива. Однако, начиная с PHP 4, этот синтаксис нежелателен к использованию.


PS: Если бы вы читали мануал, у вас бы не возникло подобных "невидений проблем"

   

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования