php4とphp5での数値の取り扱いの違い、指数形式にしたくない
利用しているサーバのphpのバージョンがphp4からphpを5に変わる
ことになり、動作させているスクリプトに移行用の変更を行って
いるのですが、下記コードの部分の振る舞いがphp4とphp5で異な
っていてphp5では動作しなくなってしまっています。
1 <?php
2 echo "start\n";
3 $debStr='';
4 $newid='00000006820000000000';
5 $debStr .= "Line 5 id=".$newid."\n";
6 $i = 0;
7 while (substr($newid,$i,1) == "0") {
8 $i++;
9 }
10 $j = 20 - $i;
11 $newid = substr($newid,$i,$j);
12 $debStr .= "Line 12 id=".$newid."\n";
13 $newid = $newid + "1000000000";
14 $debStr .= "Line 14 id=".$newid."\n";
15 echo $debStr;
16 ?>
をphp4で実行すると
1 [xxx@devxxx Test]$ php -v
2 PHP 4.4.8 (cli) (built: Feb 4 2008 16:46:07)
3 Copyright (c) 1997-2008 The PHP Group
4 Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend
Technologies
5 [xxx@devxxx Test]$ php msgid.php
6 start
7 Line 5 id=00000006820000000000
8 Line 12 id=6820000000000
9 Line 14 id=6821000000000
となるのですが
php5で実行すると
1 [xxx@devxxx Test]$ php -v
2 PHP 5.2.6 (cli) (built: May 7 2008 11:01:30)
3 Copyright (c) 1997-2008 The PHP Group
4 Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend
Technologies
5 [xxx@devxxx Test]$ php msgid.php
6 start
7 Line 5 id=00000006820000000000
8 Line 12 id=6820000000000
9 Line 14 id=6.821E+12
実際のサーバ上でのphpバージョンは、
PHP 4.4.7と
となり9行目の "id=6821000000000"が"id=6.821E+12"のように指数で
の表示になり、idとして機能しなくなってしまいます。
どなたかphp5でもphp4と同じ結果を得る方法を教えていただけないで
しょうか。
よろしくお願いします。
補足
ありがとうございます。 「何も書かない」ことをもって Open source のまま続けられると解釈 することろに一抹の不安を覚えますが、少なくとも open source で 続けないとは言っていないのですね。