Что вернёт strpos('mrwagon',626); ?

Статус
В этой теме нельзя размещать новые ответы.

newARTix

Новичок
1 (единицу), по крайней мере на CentOS 6.5 PHP-FPM 5.4.35

Код:
var_dump( strpos( 'mrwagon', 626 ) ); // 1
Цуко, это гениально.
 

newARTix

Новичок
не, типы приводить надо, но за такие подставы в языке с динамической типизацией я бы увольнял без выходного пособия :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну в мануале там явно написано, что оно делает. Только зачем так сделано - мне не ясно. 626 код это как раз r
 

newARTix

Новичок
Да уж, php это тот язык, который заставляет перечитывать мануалы даже если ты на нём кодишь уже несколько лет. Ибо подвохи, в разных функциях свои, имеют свойство забываться. Всё-таки создавал его человек "с нестандартным мышлением" :)
 

WMix

герр M:)ller
Партнер клуба
мне кажется иногда пользуются им(php) люди "с нестандартным мышлением"
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
приведения типов здесь наоборот нет.
перегрузка функций при разных сигнатурах встречается в большинстве программ на С

надо проверять данные, а не винить PHP за то что он не прочел ваши мысли и не привел к правильному типу
 
Последнее редактирование:

newARTix

Новичок
С точки зрения кодинга понятно почему так сделано, видимо так было проще. Вместо того чтобы в функцию засовывать проверку типа, оставили это на долю кодера. И назвали это фичей. Но очевидно, что по-хорошему, если бы я хотел проверять наличие символа по коду, я бы сделал это явно, а-ля strpos($string, chr($symbol)).

В общем, ещё одна причина почему стоит всегда использовать mb_* (даже когда уверен что на входе исключительно однобайтовые строки, которые, путешествуя по хранилищам данных, могут из '626' превратиться в 626) и не думать об этом больше.

PS В Си это вполне ожидаемо, а вот в языке который позиционирует себя как "язык для домохозяек" это просто свинство. Именно потому у php такая слава.
 

newARTix

Новичок
PPS Да, погуглил исходники, так сделали намеренно. "Так исторически сложилось." В общем теперь я понял все эти срачи, за то чтобы выпилить "историческое наследие" а-ля array_map и array_walk или substr и substr_count (эту функцию я регулярно ищу в мануале, ибо забываю её название).
Ещё один срач произошёл, тему можно закрывать :)
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху