- Как удалить все ведущие нули в строке
- Ещё вопросы
- Работа с числами в PHP
- Проверка переменных
- Является ли переменная числом
- Целое или число с плавающей точкой
- Положительное или отрицательное
- Чётное или нечётное
- Привидение к типу
- Преобразование в целое число
- Преобразование в число с плавающей точкой
- Округление
- Округление до целого числа в меньшую сторону:
- Округление до целого числа в большую сторону:
- Ведущие нули
- Добавить ведущие нули:
- Удалить ведущие нули:
- Абсолютное значение
- Сделать число отрицательным:
- Инкремент и декремент
- Минимальное значение
- PHP УБРАТЬ ВЕДУЩИЙ НОЛЬ
Как удалить все ведущие нули в строке
@NabeelKhan Это не ответило бы на вопрос, который не просит преобразовать строку в целое число. См. Комментарии к ответу Svisstack, почему это не такое уж хорошее решение.
@lonesomeday loneomeday, вы должны внимательно прочитать его вопрос, где он упоминает: «обратите внимание, что число выше было сгенерировано случайным образом». так что они уже целые числа 🙂
Я только что попытался (int) «00009384783473» (случайное число), и мой результат был 2147483647. Однако, если я разыграю его как число с плавающей точкой, похоже, он работает нормально. Странный
В руководстве говорится, что «размер целого числа зависит от платформы, хотя максимальное значение около двух миллиардов является обычным значением (это 32-битная подпись)»
Не странно Целые числа в php доходят до 2 ^ 31, то есть 2147483647. Для любых больших чисел вам придется использовать решение на основе строк lonesomeday.
Может показаться, что приведение к float работает, но в какой-то момент вы получите ошибки округления.
как насчет идеи оценки каждой строки с помощью оператора цикла, что, когда она получает ненулевую цифру (или строку), она получает индекс этой цифры и удаляет все предшествующие нули, а затем выводит строку, которая начинается с первым ненулевым значением ..
Я бы не стал использовать преобразования и арифметику с плавающей точкой для простой строковой задачи. Решение loneomeday будет намного быстрее — в моем тестировании примерно на 60 — 70% быстрее, чем (string) (float).
Не знаю, почему люди используют такие сложные методы для достижения такой простой вещи! И регулярное выражение? Wow!
Вот вам, самый простой и простой способ (как описано здесь: https://nabtron.com/kiss-code/):
$a = '000000000000001'; $a += 0; echo $a; // will output 1
Это кажется более простым решением, но оно не обрабатывает строки любого размера, как это делают другие ответы. Вы преобразуете строку в целое, а затем возвращаете ее в виде строки — проще просто укоротить строку.
Подобно другому предложению, за исключением того, что он не уничтожит фактический нуль:
вы можете добавить «+» в свою переменную,
$numString = "0000001123000"; echo +$numString;
Я не думаю, что preg_replace — это ответ. старая нить, но просто случиться с этим сегодня. Литература ltrim и (int) является победителем.
"; echo $fixed_str1 . " Fix1"; echo "
"; echo $fixed_str2 . " Fix2"; echo "
"; echo $fixed_str3 . " Fix3"; echo "
"; echo $actualInt . " Actual integer in string"; //output 0000001123000 Origina 1123 Fix1 1123000 Fix2 1123000 Fix3 1123000 Actual integer in tring
Regex был предложен уже, но не правильно:
Справочная информация по регулярному выражению: сигнал ^ начинает строку, а знак + сигнализирует больше или ни один из предшествующих знаков. Поэтому регулярное выражение ^0+ соответствует всем нулям в начале строки.
Ajay Kumar предлагает простейшее echo + $numString; Я использую их:
echo round($val = "0005"); echo $val = 0005; //both output 5 echo round($val = 00000648370000075845); echo round($val = "00000648370000075845"); //output 648370000075845, no need to care about the other zeroes in the number //like with regex or comparative functions. Works w/wo single/double quotes
На самом деле любая математическая функция будет принимать число из строки и обрабатывать ее так. Это намного проще, чем любые регулярные выражения или сравнительные функции. Я видел это в php.net, не помню где.
Предполагая, что вы хотите удалить три или более нулей, а ваш пример — одна строка:
$test_str ="0002030050400000234892839000239074"; $fixed_str = preg_replace('/000+/','',$test_str);
Вы можете сделать шаблон регулярного выражения подходящим, что вам нужно, если мои предположения не работают.
Ещё вопросы
- 0 Использование перегруженной функции внутри шаблона с параметром шаблона
- 1 Bluetooth на 2.0+
- 1 Сохранить изображение поверх существующего изображения
- 0 обработчик событий на динамически добавленном элементе не работает с плагином select2
- 0 Почему `typename` все еще необходимо, даже если тип шаблона объявлен как` class`?
- 0 Некоторые основные вопросы о JWT (на стороне сервера и клиента)
- 1 Удаление строки запроса из ServletRequest после того, как она достигает сервлета / фильтра
- 0 Как отфильтровать `объекты` по значению
- 0 что такое цель: x86_64-redhat-linux?
- 0 Как определить некоторые переменные конфигурации
- 0 Jquery datepicker — не может перейти от ввода текста к вводу даты
- 0 Как эффективно вставить элементы в карту?
- 0 Замена нескольких экземпляров слов на .replace
- 0 Microsoft Visual Studio C ++ 2010 Exp — Компиляция в порядке, но не работает
- 0 Фокус и перезапись
- 0 Преобразовать целое число в формат времени, чтобы вы могли рассчитать разницу во времени с ним
- 0 MySQL не может создать таблицу
- 0 Пункты меню с разной шириной
- 1 Не удается найти элемент с помощью Selenium
- 0 Значение массива не работает
- 0 Версия OpenGL не печатается
- 1 Есть ли элегантный способ извлечь отдельные слова из имен переменных в массив?
- 0 I18n с Angular JS (jlg-i18n) — фильтры даты и валюты не работают (динамическое изменение локали $)
- 1 Как настроить ESLint, чтобы он запрещал экспорт по умолчанию
- 0 HTML кодирование и PHP
- 1 некоторые настройки в VS Code
- 0 JQuery флажок проблемы
- 0 HTML-таблица и выравнивание границ
- 1 Загрузка запрещена с помощью X-Frame-Options: websitename / Register не разрешает кадрирование между источниками в MVC5
- 0 используя AS3 для отправки данных в php файл
- 0 Как я могу передать значение радиокнопки с идентификатором из db в текстовое поле
- 0 PHP массив считывает последовательность
- 1 Как сделать полосовой показ перед графиком
- 0 Вставка данных в базу данных через MySQL с использованием Visual Studio в C #
- 0 Как сгруппировать / разбить этот массив массив в php N
- 1 Определение CultureInfo свойства с помощью DataAnnotation
- 1 Как сравнить разницу в многомерных массивах?
- 0 Как изменить строки со столбцами в матрице с одинаковой шириной?
- 1 Создайте ссылку на раскадровку в рабочем элементе TFS программно
- 1 Проблема Xamarin Forms CustomPicker
- 1 Как удалить дубликаты (различные значения) без первичного ключа
- 0 Добавление файла в crontab через скрипт php
- 1 Как получить доступ к зарезервированным словам Beautifulsoup в документе xml на python?
- 0 jQuery Изменить параметр параметров Объект клонированного элемента
- 1 Работают ли делегаты C # как функции Excel / User Defined?
- 0 Автообновление включенной таблицы, необходимо получить значение ячейки выбранной строки
- 1 Задание пути к классу для JAR-файла Oracle JDBC в сентосах
- 0 Angular — фиксировать заголовок, пока анимируется представление ngAnimate.
- 1 Как отключить будущие даты в calendarView [дубликаты]
- 0 Несколько вставок в цикле codeigniter
Работа с числами в PHP
Сборник математических функций PHP и примеры их использования.
Проверка переменных
Является ли переменная числом
is_numeric($value) – проверяет, является ли значение или переменная числом или строкой, содержащей число.
is_numeric(1); // true is_numeric(0.1); // true is_numeric(-1); // true is_numeric(-0.1); // true is_numeric('1'); // true is_numeric('1abc'); // false is_numeric('abc'); // false
ctype_digit($value) – проверяет, являются ли все символы в строке цифрами.
ctype_digit('123'); // true ctype_digit('123.10'); // false ctype_digit('abc'); // false ctype_digit('1abc'); // false ctype_digit('abc1'); // false
is_int($value) – проверяет, является ли значение целым числом.
is_int(1); // true is_int(0.1); // false is_int(-1); // true is_int(-0.1); // false is_int('1'); // false is_int('1abc'); // false is_int('abc'); // false
is_float($value) – проверяет, является ли значение числом с плавающей точкой.
is_float(1); // false is_float(0.1); // true is_float(-1); // false is_float(-0.1); // true is_float('1'); // false is_float('1abc'); // false is_float('abc'); // false
Целое или число с плавающей точкой
Следующий пример определяет является ли число целым или с плавающей точкой, при этом не проверяет его отрицательность.
$value = 1; if (is_int($value)) < echo 'Целое число'; >elseif (is_float($value)) < echo 'Число с плавающей точкой'; >else
Положительное или отрицательное
$value = 1; if ($value == abs($value)) < echo 'Число положительное'; >if ($value != abs($value))
Чётное или нечётное
$value = 100; if (($value % 2) == 0) < echo 'Число чётное'; >if (($value % 2) != 0)
Привидение к типу
Преобразование в целое число
(int) 1; // 1 (int) 0.1; // 0 (int) -1; // -1 (int) -0.1; // 0 (int) '1'; // 1 (int) 'abc'; // 0 (int) '1abc'; // 1 (int) 'abc1'; // 0
В место (int) можно использовать (intiger) . Тоже самое делает функция intval() :
intval(1); // 1 intval(0.1); // 0 intval(-1); // -1 intval(-0.1); // 0 intval('1'); // 1 intval('abc'); // 0 intval('1abc'); // 1 intval('abc1'); // 0
Преобразование в число с плавающей точкой
(float) 1; // 1 (float) 0.1; // 0.1 (float) -1; // -1 (float) -0.1; // -0.1 (float) '1'; // 1 (float) 'abc'; // 0 (float) '1abc'; // 1 (float) 'abc1'; // 0
В место (float) можно использовать (double) или (real) и тоже самое делает функция floatval() .
floatval(1); // 1 floatval(0.1); // 0.1 floatval(-1); // -1 floatval(-0.1); // -0.1 floatval('1'); // 1 floatval('abc'); // 0 floatval('1abc'); // 1 floatval('abc1'); // 0
Округление
Функция round($value, $precision) округляет значение до указанных цифр после запятой.
echo round(100001.123456, 2); // 100001.12
Функция может окрукруглять значение целой части (числа перед запятой), для этого нужно указать отрицательное значение во втором аргументе.
Округление до целого числа в меньшую сторону:
echo floor(100.4); // 100 echo floor(100.9); // 100
Округление до целого числа в большую сторону:
echo ceil(100.4); // 101 echo ceil(100.1); // 101
Ведущие нули
Добавить ведущие нули:
echo sprintf("%06d", 100); // 000100 echo sprintf("%010d", 100); // 0000000100
Удалить ведущие нули:
echo intval('0000000100'); // 100 // Или с помощью ltrim echo ltrim('0000000100', '0'); // 100
Абсолютное значение
Функция abs($value) – возвращает абсолютное значение (модуль числа), т.е. из отрицательного делает положительное.
echo abs(100); // 100 echo abs(-100); // 100 echo abs(1.5); // 1.5 echo abs(-1.5); // 1.5
Сделать число отрицательным:
$value = 10; $value = -abs($value); echo $value; // -10
Инкремент и декремент
Инкремент – увеличение значения на единицу, бывает постфиксный и префиксный.
// Постфиксный инкремент $value = 10; echo $value++; // 10 echo $value; // 11 // Префиксный инкремент $value = 10; echo ++$value; // 11 echo $value; // 11
Декремент уменьшает значение на единицу.
// Постфиксный декремент $value = 10; echo $value--; // 10 echo $value; // 9 // Префиксный декремент $value = 10; echo --$value; // 9 echo $value; // 9
Минимальное значение
PHP УБРАТЬ ВЕДУЩИЙ НОЛЬ
PHP — это язык программирования, который имеет множество функций, позволяющих управлять и обрабатывать различные данные. Когда вы работаете с числами в PHP, иногда числа могут начинаться с ведущего нуля. Такое поведение может быть не всегда корректным в различных контекстах. Чтобы убрать ведущий ноль из числа, можно использовать несколько способов.
Один из способов — это приведение к типу integer:
$number = ‘056’;
$number = (int) $number;
echo $number; //выведет 56
Как видно в данном примере, переменной $number было присвоено значение ‘056’. Затем значение переменной изменено на тип integer, используя приведение типов (int) перед переменной. В итоге, ведущий ноль исчез и в переменной хранится число 56, которое и выводится на экран.
Другой способ — это использование функции ltrim:
$number = ‘056’;
$number = ltrim($number, ‘0’);
echo $number; //выведет 56
В данном примере функция ltrim используется для удаления ведущего нуля из строки. Второй параметр функции указывает, какие символы нужно удалить из начала строки. В данном случае мы удаляем символ «0». Затем значение переменной $number изменяется на полученное результат, и выводится на экран число без ведущего ноля.
Наконец, можно использовать функцию sprintf:
$number = ‘056’;
$number = sprintf(‘%d’, $number);
echo $number; //выведет 56
Функция sprintf используется для форматирования строки. В данном примере мы указываем, что нужно отформатировать переменную $number как тип integer (%d), и затем сохраняем форматированный результат в ту же переменную. Полученный результат выводится на экран, и в нем уже нет ведущего ноля.
ЗАПРЕЩЁННАЯ ИСТОРИЯ: НАСТОЯЩИЙ ВОЗРАСТ ПИРАМИД
automatic logout after 1 minutes of inactive in PHP — how to make auto logout in PHP
Создание PHP веб сайта за 1 час! + Выгрузка на сервер
Позднее статическое связывание PHP — Late static binding
Ведущий ноль в старом конфигураторе
КАК БЕЗ ПЕРЕЗАГРУЗКИ СТРАНИЦЫ СДЕЛАТЬ ЗАПРОС
Локализация сайта при помощи php