Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
Почему следующий код выводит bool(true)? Код: php 1. Что за глюк? Ведь в массиве нет значения "test"!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 03:15 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
tronovav, читайте про приведение типов этот пример аналогичен: Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 05:43 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
tronovav, Угу Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 06:52 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Понял :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 13:41 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
tronovavСпасибо! Понял :) А мне можно подокладнее объяснить? А то я что-то не совсем понял :) Код: php 1. 2. 3. 4. То есть после приведения типов мы должны получить что 'test'<>'test'? Я чего-то недопонял, или тут явно логика ломается? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 17:21 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
авторЯ чего-то недопонял, или тут явно логика ломается? :) юзай === и не ломай голову по мелочам!!! Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:04 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
авторecho((bool)((int)'test') == (bool)'test'); = false? интересно как из этого можно вывести что 'test'<>'test'. альтернативная логика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:11 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
tronovavПочему следующий код выводит bool(true)? Код: php 1. Что за глюк? Ведь в массиве нет значения "test"!!!! так должно Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:44 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторecho((bool)((int)'test') == (bool)'test'); = false? интересно как из этого можно вывести что 'test'<>'test'. альтернативная логика. Я сравнивал одно и то же значение, только одно из них напрямую привёл к логическому типу, а другое привёл к нему же, но через промежуточное int . При это в одном получил true, а в другом false. Вот и спрашиваю, а это нормально? Просто по логике любое ненулевое значение после ЛЮБОГО приведения типов должно остаться ненулевым... так же и нулевое должно остаться нулевым... А в данном случае на вход подаём ненулевое значение, приводим к другому типу и на выходе получаем нулевое значение. КАК ТАК? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:45 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ты сделал мой день. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:46 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ScareCrowальтернативная логика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:46 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ScareCrowты сделал мой день. ага... молодец... а теперь не мешай людям в обсуждении вопросов. Тебе ведь даже по теме сказать ничего и в голову не приходит. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 18:54 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
tronovavПочему следующий код выводит bool(true)? Код: php 1. Что за глюк? Ведь в массиве нет значения "test"!!!! для тех кто не понял стандартная реализация функции приведения текста в число - это даже не пхп ограничиваеться, в мускле будет тоже самое когда мы переделываем строку в число - мы смотрим если строка начинаеться с символа не числового - то это 0 если строка с числового символа (цифра, знак отрицательного числа, точка без ведущего нуля где это разрешено) то берём от начала строки все что относиться к числу, откидывая текст после, и вот это и будет резултат преобразования. в мануал же отсылку дали. там же примеров куча. для случая автора in_array('test',array(0), true); --true, заставляет сравнивать как === , с проверкой типа без тру, сравнение идёт с приведением типа, и строка становиться нулём. ============= везде тру 'vasya'==0 '1vasya'==1 '23.3vasi'==23.3 'vasya1'==0 ''==0 =========== ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 19:01 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, понял... Я конечно об этом тоже думал, но надеялся, а вдруг всё иначе. За ответ спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 19:21 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрПросто по логике любое ненулевое значение после ЛЮБОГО приведения типов должно остаться ненулевым есть строка $s = 'xyz'; нука скажите, в какое НЕНУЛЕВОЕ число его нужно однозначно перевести? и объясните почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 05:51 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрТо есть после приведения типов мы должны получить что 'test'<>'test'? Я чего-то недопонял, или тут явно логика ломается? :)А то что (float)1.5 <> (int)1.5 не напрягает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 06:05 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
r uПрограмёрПросто по логике любое ненулевое значение после ЛЮБОГО приведения типов должно остаться ненулевым есть строка $s = 'xyz'; нука скажите, в какое НЕНУЛЕВОЕ число его нужно однозначно перевести? и объясните почему. Может это всё из-за того, что я выходец из паскаля с чёткой типимизацией и никак не могу привыкнуть. Но... мне квжется более правильным приведение любой ненулевой строки к единице (или например к количеству символов в строке... не важно), а нулевой - к нулю. А перевод строки в число осуществлять с помощью функции intval например. Но как уже говорил, мне просто придётся привыкнуть. P.S. мнрго моих проблем связано с автоматическим приведением типов, когда строка "0" по непонятным мне причинам понимается как число 0, а при выводе пользователю переводится обратно в строку как "". То есть стараюсь вывести "0", а получаю "". Как такое побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 09:42 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрКак такое побороть? не полагаться на автоматическое приведение типов - а делать это самому вручную. и приводить к тем типам которые нужны по логике программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 09:53 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
r uПрограмёрКак такое побороть? не полагаться на автоматическое приведение типов - а делать это самому вручную. и приводить к тем типам которые нужны по логике программы. не получается, так как даже strval мне возвращает не "0", а "". Такие ситуации обходил по-деревенски через $str=="" ? "0" : $str . Но это ведь не нормально... Как-то ведь такое должно решаться? P.S. Если везде приводить типы вручную, тогда какая вообще польза от автоматического приведения типов? Тогда оно просто мешает и заставляет писать более сложные и менее легкочитаемые конструкции. P.P.S прошу рассматривать мои рассуждения не как попытка доказать, что пхп - это неправильно, а просто как выражения своего непонимания некоторых принципов и попытку найти помощь в их понимании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 10:13 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
r uесть строка $s = 'xyz'; нука скажите, в какое НЕНУЛЕВОЕ число его нужно однозначно перевести? и объясните почему. <мрачно> оно вообще не должно приводиться. Должно выкидываться исключение. Ну или приводиться в null. Но тогда сравнение null == 0 должно выдавать false. В общем, рассуждений на тему приведения типов в php и так полно, так что не стоит углубляться. to Програмёр: можно считать, что общих принципов нет. И попытаться вызубрить таблицы на http://php.net/manual/en/types.comparisons.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 10:28 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЕсли везде приводить типы вручную, тогда какая вообще польза от автоматического приведения типов?Ну, все же, механизм автоматического преобразования типов данных работает и в большинстве случаев правила преобразований достаточно просты. Что касается нюансов - так они есть в любой более-менее сложной системе. ПрограмёрТогда оно просто мешает и заставляет писать более сложные и менее легкочитаемые конструкции.Скорее, более подконтрольные. А оттуда уже и сложность конструкций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 10:28 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
r uПрограмёрПросто по логике любое ненулевое значение после ЛЮБОГО приведения типов должно остаться ненулевым есть строка $s = 'xyz'; нука скажите, в какое НЕНУЛЕВОЕ число его нужно однозначно перевести? и объясните почему. а это не верно - что любое не нулевое значение после преобразования типа должно оставаться не нулевым. ??? это кто тебе такое сказал? контр пример значение 1 - обьект, содержащий втом числе вбыорку из базы которая пустая. - не нулевое при преобразовании в масив выдаёт пустой масив (магический метод) - нулевое клас - это тоже тип данных! боллее того, что значит преобразование типа...просто вдумайся в сам термин. это значит что мы имеем два значения, которые по своей природе не одно и тоже, ну скажем строка ПЕТЯ, и масив с одним елементом ПЕТЯ. первое это однозначное значение, второе, это набор значений, который пока что состоит из одного. преобразования типа, это проекция значения одного на другое. проекция одного отрезка не нулевой длины, на другой отрезок всегда даст не нулевую длину??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 11:37 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрScareCrowпропущено... интересно как из этого можно вывести что 'test'<>'test'. альтернативная логика. Я сравнивал одно и то же значение, только одно из них напрямую привёл к логическому типу, а другое привёл к нему же, но через промежуточное int . При это в одном получил true, а в другом false. Вот и спрашиваю, а это нормально? Просто по логике любое ненулевое значение после ЛЮБОГО приведения типов должно остаться ненулевым... так же и нулевое должно остаться нулевым... А в данном случае на вход подаём ненулевое значение, приводим к другому типу и на выходе получаем нулевое значение. КАК ТАК? очень легко если а==б то и ф(а)==ф(б) НО! не ф(а)==х(б) - ЛОЖНО!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 11:39 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
Програмёрr uпропущено... есть строка $s = 'xyz'; нука скажите, в какое НЕНУЛЕВОЕ число его нужно однозначно перевести? и объясните почему. Может это всё из-за того, что я выходец из паскаля с чёткой типимизацией и никак не могу привыкнуть. Но... мне квжется более правильным приведение любой ненулевой строки к единице (или например к количеству символов в строке... не важно), а нулевой - к нулю. А перевод строки в число осуществлять с помощью функции intval например. Но как уже говорил, мне просто придётся привыкнуть. P.S. мнрго моих проблем связано с автоматическим приведением типов, когда строка "0" по непонятным мне причинам понимается как число 0, а при выводе пользователю переводится обратно в строку как "". То есть стараюсь вывести "0", а получаю "". Как такое побороть? Паскаль сдесь непричом, я тоже оттуда. Просто ты пхп учил не досконально как воощемто все, а по краткому курсу, и где информация о деталях отсутсвовала, мозг допридумал, и теперь кажеться не привычным :) а вообще, опять же- всё зависит от нашей логики. да - можно посмотреть на строку, как елемент при преобразовании в число должна быть её длина НО!!! Язык пхп изначально это текстовый препроцессор. он для обработки текста. тоесть предполагаеться что все данные (числа, логические, итд) изначально и на выходе по сути текст. внутри ядра пхп есть понятие типа - но это больше для оптимизации работы, чем для тебя. тоесть я веду к тому, что 'test'==0 , как бы выразиться, это аналог ошибки на паскале при попытке сравнить string vs integer ток сдесь религия языка не позволяет ошибку генерировать, так как сказал бог, да будет текст, и не будет других типов , и всё можно свести к тексту, и текст можно свести ко всему. вот и получаем 0 из текста, где нету числа. по сути этот 0 после преобразования - это как ошибка бы была в паскале ...аля мужик - тут как бы нет текста. в паскале что будет strToInt('vasya') ??? 5? 1? или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 11:47 |
|
||
|
что за глюк с функцией in_array()?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453а это не верно - что любое не нулевое значение после преобразования типа должно оставаться не нулевым. ??? это кто тебе такое сказал? это здравый смысл. а тебе кто сказал что должно быть наоборот? посмотри другие языки, если нет четкого алгоритма перобразования одного к другому - то значение обнуляется или кидается исключение. это вполне логично. ибо компилятор незнает как однозначно преобразовать одно в другое. НЕТ ТАКОГО АЛГОРИТМА! предложи если можешь. это поведение предсказуемо и ограничивает от многих ошибок. а по твоей логике. ждем число. пришла в реальности срока с текстом. какиемто образом строка преобразовалась к КАКОМУТО числу(совершенно ХЗ какое будет). алгоритм даже неузнает что на входе мусор а не данные. и продолжит далее вычисления , ведь он получил не ноль а НЕКОЕ число. и в итоге чегото там насчитает, что по сути никому не даст никакой пользы. ибо раз пришел мусор то и считать ничего не надо было. потому то - лучше обнулить. так хоть сразу ясно что с данными чтото не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 12:29 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38267501&tid=1463787]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 349ms |

| 0 / 0 |
