5

先頭に 0 が付く一連のシリアル番号を持つデータベースを使用しています。

したがって、シリアル番号は 00032432 または 56332432 のようになります。

問題はPHPにあります。8進数の変換システムがどのように機能するかわかりません。

特定の例は、これらすべての整数ベースの数値を文字列と変換して比較しようとしていることです。

比較できるように、00234 などの 8 進数を "00234" などの文字列に変換することはできますか?

編集 - 特定の例を追加します。以下のように、シリアルで str 関数を実行できるようにしたいと思います。

  $serial = 00032432; // coming from DB

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

        // do something

   } 
4

5 に答える 5

5

で変換すると(string) $number、常に 10 進法で文字列が得られます。数値を 8 進モードで書くか 10 進モードで書くかは関係ありません。int は int であり、それ自体は底を持ちません。ベースで解釈する必要があるのは、彼の文字列表現です。

次の方法で、数値の 8 進文字列表現を取得できます。

$str = base_convert((string) 00032432, 10, 8);

または10進数表現で数値を与える:

$str = base_convert((string) 13594, 10, 8);    

または、より簡潔ですが、明確ではありません。

 $str = base_convert(00032432, 10, 8);
 $str = base_convert(13594, 10, 8);

最後に、文字列変換が暗黙的に行われます。例では、結果としてすべて $str = "32432" が得られます。

base_convertは、数値の文字列表現を基数から別の基数に変換します

文字列にゼロも必要な場合は、簡単な計算でそれらを追加できます。

これがあなたを助けることを願っています。

于 2010-03-22T21:46:48.323 に答える
1

8 進数を文字列に変換するには、次のようにキャストします。

$str = (string) 00032432;

関数 octdec および decoct を使用して、8 進数と 10 進数を変換できます。

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

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

于 2010-03-22T21:01:31.660 に答える
0
$serial = 00032432; //here you have an octal number
$serial= strval($serial); //now you have a string
if ($serial[0]=="0") {
 //do something
}
于 2010-03-22T21:00:25.573 に答える
0

データベースのすべてが自動的に文字列になります。整数は文字列、日付は文字列、犬は文字列です。

何か奇妙なことをしている場合は、次の方法で何かを文字列に変換します。$a = (string) 12;

于 2010-03-22T21:02:37.157 に答える