Работа с преобразованиями PHP Octals и String

Я работаю с базой данных, в которой есть куча серийных номеров с префиксами с ведущими 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)); ?> 

    http://uk.php.net/manual/en/function.octdec.php

     $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;