Я работаю с базой данных, в которой есть куча серийных номеров с префиксами с ведущими 0.
Поэтому серийный номер может выглядеть как 00032432 или 56332432.
Проблема с PHP Я не понимаю, как работает система конверсии с восьмеричными.
Конкретным примером является то, что я пытаюсь преобразовать и сравнить все эти числа на основе целых чисел со строками.
Можно ли конвертировать восьмеричную, такую как 00234, в строку типа «00234», чтобы я мог ее сравнить?
edit – добавление конкретного примера. Я хотел бы иметь возможность запускать функции str в последовательном порядке, как показано ниже.
$serial = 00032432; // coming from DB if(substr($serial, 0, 1) == '0') { // do something }
Когда вы конвертируете с (string) $number
, вы всегда получаете строку в десятичной базе, неважно, записываете ли вы число в восьмеричном режиме или в десятичном режиме, int – это int, и он не является базой. Это его строковое представление, которое должно быть интерпретировано базой.
Вы можете получить восьмеричное представление строки номера следующим образом:
$str = base_convert((string) 00032432, 10, 8);
или задание числа в десятичной запятой:
$str = base_convert((string) 13594, 10, 8);
или, более кратко, но менее четко:
$str = base_convert(00032432, 10, 8); $str = base_convert(13594, 10, 8);
В последнем преобразование строк выполняется неявно. Примеры дают все как результат $ str = "32432".
base_convert преобразует строковое представление числа из базы в другую
Если вы хотите также нули в своей строке, вы можете добавить их с помощью простой математики.
Надеюсь, это может вам помочь.
Чтобы преобразовать восьмеричную строку в строку, произведите ее:
$str = (string) 00032432;
Вы можете конвертировать между восьмеричным и десятичным с функциями octdec и decoct
<?php echo octdec('77') . "\n"; echo octdec(decoct(45)); ?>
$str = sprintf('%o', $octal_value);
$serial = 00032432; //here you have an octal number $serial= strval($serial); //now you have a string if ($serial[0]=="0") { //do something }
Все из базы данных является автоматически строкой. Целые строки – это строки, даты – строки, собаки – строки.
Если вы делаете что-то странное, преобразуйте что-нибудь в строку: $a = (string) 12;