[php] как отключить неявную типизацию из строки в число?
От: MacJoseph  
Дата: 06.08.10 09:09
Оценка:
при сравнении двух строк состоящих из набора чисел длины > 16, чтобы вот эти две считались разными:

'10000000000000001' != '10000000000000000'

а сейчас, в 5.3.0 [win32] оператор сравнивания выдает истину
Re: [php] как отключить неявную типизацию из строки в число?
От: anonymous Россия http://denis.ibaev.name/
Дата: 06.08.10 09:29
Оценка:
Здравствуйте, MacJoseph, Вы писали:

MJ>при сравнении двух строк состоящих из набора чисел длины > 16, чтобы вот эти две считались разными:

MJ>'10000000000000001' != '10000000000000000'

http://docs.php.net/manual/ru/function.strcmp.php
Re: [php] как отключить неявную типизацию из строки в число?
От: monax  
Дата: 06.08.10 15:03
Оценка:
Здравствуйте, MacJoseph, Вы писали:

MJ>при сравнении двух строк состоящих из набора чисел длины > 16, чтобы вот эти две считались разными:


MJ>'10000000000000001' != '10000000000000000'


MJ>а сейчас, в 5.3.0 [win32] оператор сравнивания выдает истину


Ну так нужно использовать оператор сравнения с сохранением типа:
<?php

print intval('10000000000000001' != '10000000000000000');
print " ";

print intval('10000000000000001' !== '10000000000000000');


Вывод 0 1
Re[2]: [php] как отключить неявную типизацию из строки в чис
От: MacJoseph  
Дата: 06.08.10 20:04
Оценка:
Здравствуйте, monax, Вы писали:

M>Здравствуйте, MacJoseph, Вы писали:


MJ>>при сравнении двух строк состоящих из набора чисел длины > 16, чтобы вот эти две считались разными:


MJ>>'10000000000000001' != '10000000000000000'


MJ>>а сейчас, в 5.3.0 [win32] оператор сравнивания выдает истину


M>Ну так нужно использовать оператор сравнения с сохранением типа:

M>
M><?php

M>print intval('10000000000000001' != '10000000000000000');
M>print " ";

M>print intval('10000000000000001' !== '10000000000000000');
M>


M>Вывод 0 1


это конечно хорошо, а как быть с функциями стандартной библиотеки юзающие оператор без сохранения типа, напр in_array, сделать свои?
сейчас адаптирую один проект под нового поставщика услуг, идентификатор пользователя там увеличился на пару символов, в результате вся логика слетела.
неприятно такое обнаруживать, все больше разочаровываюсь в php.
Re[3]: [php] как отключить неявную типизацию из строки в чис
От: Курилка Россия http://kirya.narod.ru/
Дата: 06.08.10 20:10
Оценка: 2 (1)
Здравствуйте, MacJoseph, Вы писали:

MJ>это конечно хорошо, а как быть с функциями стандартной библиотеки юзающие оператор без сохранения типа, напр in_array, сделать свои?

MJ>сейчас адаптирую один проект под нового поставщика услуг, идентификатор пользователя там увеличился на пару символов, в результате вся логика слетела.
MJ>неприятно такое обнаруживать, все больше разочаровываюсь в php.

PHP ещё тот ад, но документацию читать тоже не мешает.
Как думаешь в сигнатуре

bool in_array ( mixed $needle , array $haystack [, bool $strict ] )

что обозначает последний опциональный параметр?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.