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

Я работаю с базой данных, которая имеет набор порядковых номеров, которые снабжаются префиксом ведущий 0.

Таким образом, порядковый номер может быть похожим 00032432 или 56332432.

Проблема с PHP, который я не понимаю, как система преобразования с octals работает.

Определенный пример - то, что я пытаюсь преобразовать и сравнить все эти основанные на целом числе числа со строками.

Действительно ли возможно преобразовать восьмеричное, такой как 00234 к строке как "00234" так, чтобы я мог сравнить его?

редактирование - добавление определенного примера. Я хотел бы смочь выполнить функции ул. на сериале как ниже.

  $serial = 00032432; // coming from DB

  if(substr($serial, 0, 1) == '0') {

        // do something

   } 
5
задан hakre 25 December 2012 в 00:05
поделиться

4 ответа

Когда вы конвертируете с помощью (строка) $ 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 преобразует строковое представление числа из одного основания в другое

Если вы хотите, чтобы в вашей строке также были нули, вы можете сложить их с помощью простых математических вычислений.

Надеюсь, это поможет вам.

5
ответ дан 14 December 2019 в 08:47
поделиться

Все из базы данных автоматически является строкой. Целые числа — это строки, даты — это строки, собаки — это строки.

Если вы делаете что-то странное, преобразуйте что-нибудь в строку: $a = (строка) 12;

0
ответ дан 14 December 2019 в 08:47
поделиться

Чтобы преобразовать восьмеричное число в строку, переведите его:

$str = (string) 00032432;

Вы можете конвертировать между восьмеричным и десятичным числом с помощью функций octdec и decoct

<?php
echo octdec('77') . "\n";
echo octdec(decoct(45));
?>

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

1
ответ дан 14 December 2019 в 08:47
поделиться
$serial = 00032432; //here you have an octal number
$serial= strval($serial); //now you have a string
if ($serial[0]=="0") {
 //do something
}
0
ответ дан 14 December 2019 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: