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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP 5.2.3 не хочет определять тип данных, $a='300'; $b='100'; $c=$a-$b; 
V
    Опции темы
Explicito
Дата 25.7.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет!
Вот такая ужасно-банальная проблема, сам с ней сталкиваюсь впервые, локально всё протестировал, работало исключительно, выложил программу на сервер, и тут повылазили баги, искал ошибку, искал.., и нашёл, оказалось что у хостмастера php v5.2.3 не хочет автоматически определять тип данных, имеются у меня в программе  переменные  типа string, но хранят значения вещественного типа:
  
Код

$max = '6000000.00';
$min = '300000.00';
$result = $max - $min; // возвращает - 300000.00 , типа string, при обычных настройках php, как у всех считает правильно, а тут...

// уже пробовал и так: 
settype($max, 'double');
// потом проверяю 
gettype($max); // всё верно, тип уже double, но значение = 0



Может быть кто-то сталкивался с такой проблемой, помогите пожалуйста
PM MAIL   Вверх
belousov
Дата 25.7.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: 6



А кавычки для цифр зачем? правда это не особо спасет, но все таки


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
Explicito
Дата 25.7.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ситуация такая, есть файл данных, формата .csv, поле которого хринит значения формата 10 350 543,50 каждое значение я парсю, так:
Код

$value = '10 350 543,50'; // значение вытянутое из файла
$value = str_replace(' ', '', $value);
$value = str_replace(',', '.', $value);
// теперь $value = '10350543.50';
// далее хочу выполнить операцию разности над этим значением, но никак не хочет...
// не хочет "понимать" строку как вещественный тип данных..
 

при локальных настройках PHP таких проблем не возникало.., что же мне делать..., помогите пожалуйста

Это сообщение отредактировал(а) Explicito - 25.7.2007, 10:23
PM MAIL   Вверх
Daevaorn
Дата 25.7.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: нет
Всего: 70



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


Опытный
**


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

Репутация: нет
Всего: 72



Код

$value = '10 350 543,50';
$value = str_replace(' ', '', $value);
$value = str_replace(',', '.', $value);
$value = floatval($value);
// $value = 10350543.50



--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
GZep
Дата 25.7.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


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

Репутация: 8
Всего: 32



Код

echo floatval(str_replace(array(' ' => '', ',' => '.'), '99 9850 543,50'));



--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Explicito
Дата 25.7.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Рабята, спсибо Вам огромное!
получилось, прям заколдованное место, сначала попробовал так:
Код

$value = str_replace(' ', '.', $value);
$value = str_replace(',', '.', $value);
// из всего списка значения нормально позаменяло.. 60 354 543,56 => 60354543.56
// а последнее 63 354 543,56 => 63 354 543.56  что за дела, сделал так:

$value = preg_replace('#\s+#is', '', $value);
$value = str_replace(',', '.', $value);
// без проблем..., слава Богу..

// помогла ф-ция
$value = floatval($value); 
 

PM MAIL   Вверх
Mal Hack
Дата 25.7.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Не хочу описывать весь тот бред, который вы тут понаписали, простите уж за прямоту, поэтому скажу как надо...
В PHP все данные, полученные от пользователя, из фалйа или откуда-ть еще считаются строковыми.
За исключением  записи: $a = 3333 - без ковычек. в Ковычках это - СТРОКА, а т.к. если в одинарных, то надо еще понять что в ней будет..
Едем далее. В вашем, Explicito, примере достаточно сделать $value = (double) $value; После замены пробелов и запятой.
А вообще, надо данные хранить в адекватном виде, а не как Бог на лушу положит... В Этом ваша ошибка.
Вариант, GZep'a - тоже самое, практически, но более правильный, что в данном случае не орбязательно. Изврат с массивом я оставлю без комментариев, поскольку, повторюсь, пока АВТОР не организует адекватное хранение данных о дальнейшем и разговора быть не может.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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