[PHP-users 27910] Re: 変数の数字を文字列にする

nomoto shin-1 @ ca2.so-net.ne.jp
2005年 12月 21日 (水) 23:25:10 JST


  nomotoです。

>1.0 は 1.00 ではなく 1.0 として扱いたいので、全てを小数点下2桁に
>そろえるのはダメなんです。。。1.2 と 1.20 は違うデータなので。

1.2 と 1.20 は同じデータ(数字1.2)です。
"1.2" と "1.20" は違うデータ(文字列)です。

>配列に入れた数字を、そのまま文字列に入れることは不可能なのでしょうか?

ご自分でも分かっていらっしゃるようですが、「入れたのは数字」
ですから、1.2と1.20に違いはありません。入れた後ではどうする事
もありません。

>array の段階で ’’ でくくればよいのでしょうが、仕様でそれが
>出来ないため、困っています。

その「仕様」が間違っているのですから、その仕様をどうにかするしかないかと。

無理矢理な方法を一つだけ教えますが、これは根本的に間違ったやり方です。
これで解決できたとしても、そういう仕様に囚われていては、明日には
越えられない問題が出てそのプロジェクトは破綻するかも知れません。
無理なものは無理という勇気も大切です。

<?php
$num = array(1.0, 1.1, 1.2, 1.10, 1.20, 1.5);
for ($i=0; $i<count($num); $i++) {
    $j = strval($num[$i]);
    $numeric = is_numeric($j);
    $string = is_string($j);
    echo "$j => numeric=$numeric, string=$string<br>\n";
}

print "---- parse my script ----<br>\n";
$fp = fopen($_SERVER["SCRIPT_FILENAME"], 'r');
while(feof($fp) == false){
  $src = rtrim( fgets($fp) );
  if (ereg('^\$num *= *array\((.*)\);', $src, $regs) == true) {
    $num = split('[, ]+', $regs[1]);
    break;
  }
}
fclose($fp);

for ($i=0; $i<count($num); $i++) {
    $j = strval($num[$i]);
    $numeric = is_numeric($j);
    $string = is_string($j);
    echo "$j => numeric=$numeric, string=$string<br>\n";
}
?>


PHP-users メーリングリストの案内