Я работаю с базой данных, которая имеет набор порядковых номеров, которые снабжаются префиксом ведущий 0.
Таким образом, порядковый номер может быть похожим 00032432 или 56332432.
Проблема с PHP, который я не понимаю, как система преобразования с octals работает.
Определенный пример - то, что я пытаюсь преобразовать и сравнить все эти основанные на целом числе числа со строками.
Действительно ли возможно преобразовать восьмеричное, такой как 00234 к строке как "00234" так, чтобы я мог сравнить его?
редактирование - добавление определенного примера. Я хотел бы смочь выполнить функции ул. на сериале как ниже.
$serial = 00032432; // coming from DB
if(substr($serial, 0, 1) == '0') {
// do something
}
Когда вы конвертируете с помощью (строка) $ 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 преобразует строковое представление числа из одного основания в другое
Если вы хотите, чтобы в вашей строке также были нули, вы можете сложить их с помощью простых математических вычислений.
Надеюсь, это поможет вам.
Все из базы данных автоматически является строкой. Целые числа — это строки, даты — это строки, собаки — это строки.
Если вы делаете что-то странное, преобразуйте что-нибудь в строку: $a = (строка) 12;
Чтобы преобразовать восьмеричное число в строку, переведите его:
$str = (string) 00032432;
Вы можете конвертировать между восьмеричным и десятичным числом с помощью функций octdec и decoct
<?php
echo octdec('77') . "\n";
echo octdec(decoct(45));
?>
$serial = 00032432; //here you have an octal number
$serial= strval($serial); //now you have a string
if ($serial[0]=="0") {
//do something
}