php中的intval()返回空字符串?

时间:2015-05-23 08:41:28

标签: php

有人可以向我解释为什么这个(可疑的,过时的和有罪的)PHP代码偶尔会返回一个包含两个星号字符的字符串?换句话说,intval()偶尔会返回一个空字符串。

avcost列对该行有什么价值(avcost被定义为double)?

$rows = mysql_query("SELECT avcost FROM singles" );
if (!$rows) return 5;
$buffer = "";

while ($row = mysql_fetch_row($rows))
{
    $avcost = intval($row[0]); // round it
    $buffer .= $avcost . "*";
}

echo $buffer; // Sometimes it echos something like: 5*0*3*0*34**4*5*

完整的答案包括对上述代码的最小修正(不使用" if($ avcost =="")" :-),保证不会出现双星号在输出中。谢谢。

1 个答案:

答案 0 :(得分:0)

  

完整的答案包括对上述代码的最小修正(不使用" if($ avcost =="")" :-),保证不会出现双星号在输出中。谢谢。

我会尝试: - )

$rows = mysql_query("SELECT `avcost` FROM `singles`");
if (!$rows) return 5;
$buffer = "";

if (mysql_num_rows($rows) == 0) return 5; // Just if you want

while ($row = mysql_fetch_assoc($rows))
{
    $avcost = round($row['avcost']); // round it
    $buffer .= $avcost . "*";
}

echo $buffer; // Sometimes it echos something like: 5*0*3*0*34**4*5*

如果它不起作用,请尝试相反并向我提供输出:

$rows = mysql_query("SELECT `avcost` FROM `singles`");
if (!$rows) return 5;
$buffer = "";

if (mysql_num_rows($rows) == 0) return 5; // Just if you want

while ($row = mysql_fetch_assoc($rows))
{
    $avcost = round($row['avcost']); // round it
    die(var_dump($avcost, intval($avcost), doubleval($row['avcost']), $row['avcost'])); // Debug purpose
    $buffer .= $avcost . "*";
}

echo $buffer; // Sometimes it echos something like: 5*0*3*0*34**4*5*