Типизируя завершающую строку в int через запятую - PullRequest
1 голос
/ 10 августа 2011

Так что моя проблема в том, что php не приводит эти типы правильно. Мне нужно найти лучший способ сделать это, чем номер 3, если он есть, и мне бы очень хотелось узнать, почему PHP обрабатывает запятуюкак период или что-то в этом роде.

$cost = "7,800.00"; // "7,800.00"
$cost = (int) "7,800.00" // int(7)
$cost = (int) preg_replace('/[^-0-9\.]/i', '', "7,800.00"); // int(7800)

Редактировать, чтобы прояснить ситуацию тем, кто не читает: я ищу более элегантный способ сделать это.Что касается того, почему такое поведение существует, я уже получил объяснение, которое я искал.Спасибо.

1 Ответ

0 голосов
/ 10 августа 2011

PHP не знает, что делать с символами группировки (в данном случае запятой), так как это не числовой символ, точка или e для возведения в степень.Таким образом, функции прекращают синтаксический анализ при чтении первого не относящегося к делу символа.

Во-вторых, взгляните на числовые функции, предоставляемые PHP: floatval и intval

...