dポイントプレゼントキャンペーン実施中!

利用しているサーバの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と同じ結果を得る方法を教えていただけないで
しょうか。

よろしくお願いします。

A 回答 (1件)

print formattedを使う方法を思いつきました


$debStr .= "Line 14 id=".sprintf("%.0f", $newid)."\n";
echo $debStr;
    • good
    • 0
この回答へのお礼

ありがとうございました、教えていただいた通りでうまくいきました。

お礼日時:2008/10/21 15:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!