Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> intval максимальный предел 
V
    Опции темы
bars80080
Дата 7.5.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



http://www.php.ru/manual/function.intval.html
Цитата

The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647.

как отодвинуть максимальный предел? есть ли какой аналог?
PM MAIL WWW   Вверх
enof
Дата 7.5.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(bars80080 @  7.5.2009,  17:06 Найти цитируемый пост)
как отодвинуть максимальный предел?

Поставить 64 битную ось.
Цитата(bars80080 @  7.5.2009,  17:06 Найти цитируемый пост)
есть ли какой аналог? 

Из стандартных средств вроде нет, можно попробовать повторить поведение с помощью строковых/рв функций.

Добавлено через 1 минуту и 55 секунд
Цитата

php.ru

 smile 
PM MAIL ICQ Skype   Вверх
bars80080
Дата 7.5.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(enof @  7.5.2009,  16:20 Найти цитируемый пост)
Поставить 64 битную ось.

это не решение, машину из-за не настроенных фар не меняют


Цитата(enof @  7.5.2009,  16:20 Найти цитируемый пост)
php.ru

php.en  smile 
PM MAIL WWW   Вверх
enof
Дата 7.5.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



Цитата(bars80080 @  7.5.2009,  18:03 Найти цитируемый пост)
php.en

где вы такой сайт нашли? Предпочитаете читать на русском г*вносайте по английски, нежели на официальном сайте документацию на русском языке? smile 
Цитата(bars80080 @  7.5.2009,  18:03 Найти цитируемый пост)
это не решение, машину из-за не настроенных фар не меняют

Ну тогда писать свою функцию, правила преобразований типов расписаны в документации.

Это сообщение отредактировал(а) enof - 7.5.2009, 17:17
PM MAIL ICQ Skype   Вверх
skyboy
Дата 7.5.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(bars80080 @  7.5.2009,  15:06 Найти цитируемый пост)
как отодвинуть максимальный предел?

а смысл? получить переполнение в переменной типа int? если оно не умещается, значит, не умещается smile
почему бы в таком случае не подключить GMP?
PM MAIL   Вверх
bars80080
Дата 7.5.2009, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(skyboy @  7.5.2009,  17:55 Найти цитируемый пост)
а смысл? получить переполнение в переменной типа int?

почему переполнение? тогда используем следующий тип bigint.

Цитата(skyboy @  7.5.2009,  17:55 Найти цитируемый пост)
если оно не умещается, значит, не умещается

совершенно не серьёзно, у меня у бланков номера такие, в базе пределы расширил, а здесь оказывается не могу легко и просто обрубать пользовательские шалости. сейчас в итоге сношу регулярку всё, что не 0-9


Цитата(enof @  7.5.2009,  17:17 Найти цитируемый пост)
Предпочитаете читать на русском г*вносайте по английски

предпочитаю вникать в тонкости дела, а не заниматься поиском нюансов в невеликом и не могучем
цеж чисто эффективность труда падает


Цитата(enof @  7.5.2009,  17:17 Найти цитируемый пост)
Ну тогда писать свою функцию, правила преобразований типов расписаны в документации.

ну это-то понятно, что замену катать придётся


Цитата(skyboy @  7.5.2009,  17:55 Найти цитируемый пост)
почему бы в таком случае не подключить GMP? 
что-то мне кажется это будет сродни вызову ударной авиации против тараканов

PM MAIL WWW   Вверх
ksnk
Дата 7.5.2009, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



bars80080, а с чего потребовалось такое? Может есть способы по другому решить задачу?

Добавлено через 1 минуту и 20 секунд
bcmath


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 7.5.2009, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(ksnk @  7.5.2009,  19:28 Найти цитируемый пост)
а с чего потребовалось такое? 

бланк билета, у него есть номер с числами превосходящими этот диапазон. номера очень важны, так как на них строится система запрещения и раздачи, а соответственно и отчётности. у них даже название такое: БСО - бланк строгой отчётности.
когда пользователь отправляет форму с данными билета, то проверяется, приписан ли этот бланк к нему. самое простое очистить номер от любых вкраплений - intval, далее в проверку и если такой не записан на агента, то ему показывается кукиш (это не дружелюбная система и исправлять чужие огрехи она не намерена, тип ошибки я им отдаю, а далее пусть контроллируют себя сами)

а фишка в том, что весь массив полей у меня пропускался через соответствующий обработчик, в котором в переменную возвращалось чистое значение согласно формату. по формату чистого числа у меня стояла простейшая обработка: intval. а что ещё было нужно? 
оказывается простота оказалась не такой простой
PM MAIL WWW   Вверх
gta4kv
Дата 7.5.2009, 19:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



А номера бланков сменить нельзя? 

Уж лучше бы они были, например, такие:
Код

NNN-00000000-NNNN

Где N — любая буква, где 0 — любая цифра. Цифр всего 8, а вариантов туева хуча. smile

От лишнего геморроя бы избавился.

Ну и конечно, да, если есть регулярка что ты вообще с invtal мучаешься?

Это сообщение отредактировал(а) gta4kv - 7.5.2009, 20:14
PM MAIL   Вверх
skyboy
Дата 7.5.2009, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(bars80080 @  7.5.2009,  17:45 Найти цитируемый пост)
тогда используем следующий тип bigint.

да, я как-то не подумал.
Цитата(bars80080 @  7.5.2009,  17:45 Найти цитируемый пост)
сейчас в итоге сношу регулярку всё, что не 0-9

мне это кажется даже более удобным вариантом smile во-первых, чисто число тебе не надо - ни складывать, ни умножать ты его не собираешься. конечный автомат, полученный из регулярки будет работать побыстрее(если речь о быстродействии на больших массивах), чем преобразование строка-число(потому как там), хотя тут можно поспорить(вдруг в PHP число не "вычисляется", а просто из строки выбрасывается мусор, как и регулярка делает). ну, и последнее: при использовании intval пользователь получит "кукиш", даже если в строку попадет, скажем, пробел(если номер будет копироваться откуда-то - вполне вероятно; если вводиться вручную - ещё вероятнее); регулярка вычистит мусор и все нормально - проверяем на валидность; intval же радикально заявит "я с таким работать не буду"(впрочем, уверен, ты и сам знаешь принцип работы, просто с регуляркой человекозаботливее выходит)
PM MAIL   Вверх
bars80080
Дата 7.5.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(gta4kv @  7.5.2009,  19:50 Найти цитируемый пост)
А номера бланков сменить нельзя? 

 smile вы такие весёлые однако. по одному моему слову все авиакомпании страны проголосуют за изменение стандартов и перейдут на новые бланки...


Цитата(skyboy @  7.5.2009,  20:04 Найти цитируемый пост)
просто с регуляркой человекозаботливее выходит

у меня где-то там тримируется по-умолчанию, а если внутри - то фиг знает, может так положено или он вообще имел другое ввиду. в моём случае лучше перебдеть, чем не до бдеть. вдруг система услужливо подставит другой бланк, а потом статистика не сойдётся? так, после того как они заявляются ко мне, "де ошибки у тебя", то они уходят с созерцанием своих кривых рук, а я вежливо киваю, "ну не огорчайтесь, с кем не бывает". к тому же у меня хватает гемора с отчётностью

я спросил: что есть номер? число? ну и ладно, получайте жёсткое число. зато поиск хорошо работает.
и gta4kv, отчёты хорошо группируются. ведь как бы тогда пришлось выписывать отчёт, где нужно было бы составить наборы типа 

QWE-6789456100-ASD - QWE-6789456120-ASD
QWE-6789456130-ASD - QWE-6789456135-ASD
QWE-6789456140-ASD - QWE-6789456150-ASD

сколько бы дополнительных действий пришлось бы совершить
PM MAIL WWW   Вверх
gta4kv
Дата 7.5.2009, 22:12 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



йопт, я пока не телепат, а тока учусь, и задачу я твою не разгадал =)
PM MAIL   Вверх
ksnk
Дата 7.5.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Если на цифры проверить - есть функция ctype_digit Всяко быстрее, чем регулярка.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 8.5.2009, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



да, но она работает строго к типу. по сути дела мне надо выкидывать всякие типа 0x789, 345.45, 3е4, но не '567'
PM MAIL WWW   Вверх
ksnk
Дата 8.5.2009, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Процитирую пример из доки:
Код

<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
    if (ctype_digit($testcase)) {
        echo "The string $testcase consists of all digits.\n";
    } else {
        echo "The string $testcase does not consist of all digits.\n";
    }
}
?>

Цитата

The above example will output:
The string 1820.20 does not consist of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consist of all digits.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 8.5.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



бррр, меня в сомнения ввёл этот пример:

Код

<?php

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false

is_numeric($numeric_string);   // true
is_numeric($integer);          // true
?> 


но здесь вообще шиворот навыворот. и это не ошибка. как он из ctype_digit(42);  возвращает false?
PM MAIL WWW   Вверх
ksnk
Дата 8.5.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



bars80080, нет в жизни ничего совершенного smile
Данные -то откуда берутся? Если из базы данных или от юзеров, то тип данных однозначно определяется. На крайний случай можно скастовать строки.

Добавлено через 1 минуту и 41 секунду
Ошибка непонятно от чего. Параметром должна быть строка, а не число. Глючит чего-то PHPшное автоматическое привидение с моторчиком...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 8.5.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(ksnk @  8.5.2009,  11:29 Найти цитируемый пост)
Данные -то откуда берутся? Если из базы данных или от юзеров, то тип данных однозначно определяется. На крайний случай можно скастовать строки.

от юзеров, но какая разница, стока из текстового поля придёт или число? это уже я решаю, и если там что-то нециферное, то показывал кукиш

ладно, пусть режутся регулярками, быть по сему
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.