【问题标题】:A non well formed numeric value encountered when converting integer to thousand separator将整数转换为千位分隔符时遇到格式不正确的数值
【发布时间】:2014-08-28 05:38:08
【问题描述】:

我有一个 PHP 代码可以从网站检索值。我得到了输出,但也得到了通知: 注意:在第 19 行遇到了格式不正确的数值。

这是我的 PHP 代码:

<?php
header('Content-Type: text/html; charset=utf-8');
$grep = new DoMDocument();
@$grep->loadHTMLFile("https://www.postme.com.my/men-1.html");

$finder = new DomXPath($grep);
$class = "amount";

$nodes = $finder->query("//*[contains(@class, '$class')]");

$i = 0;
  foreach ($nodes as $node) {
    if ($i<1) {
    $span = $node->childNodes;
    $replace = str_replace("Items 1-12 of", "",$span->item(0)->nodeValue);
    echo number_format($replace, 0 , '.' , ',' ) . '<br/>';
  }
   $i++;
  }
?>

如何更正它,以便在我为其分配数字格式时不会出现通知。 谢谢!

【问题讨论】:

  • 你有没有在每次迭代时检查$replace 的内容,看看它是否在某个时候不是一个数字?
  • 输出是整数..我已经用空白替换了所有字符。
  • 知道了...我只是把 $convert = (int)$replace;

标签: php numeric


【解决方案1】:

您可以在命令前面放置一个 at 符号以忽略所有通知等。这通常是不好的形式,但它应该可以工作。

echo @number_format($replace, 0 , '.' , ',' ) . '<br/>';

编辑:@ 放错地方了。

此外,正如建议的那样,您还可以检查以确保该值是数字:

http://php.net/manual/en/function.is-numeric.php

if(is_numeric($replace){
    echo number_format($replace, 0 , '.' , ',' ) . '<br/>';
}

编辑编辑:您也可以尝试按此处所述对变量进行类型转换:

number_format() causes errors in Apache log

【讨论】:

  • 不,请不要建议人们使用@ 运算符。隐藏错误、警告和通知绝不是一个好主意...方式最好知道问题出在哪里,然后妥善处理。
  • @ClémentMalet 我同意你的观点,这就是为什么我提到它的形式不好。我扩展了我的答案以包括 is_numeric 以帮助避免错误抑制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 2015-11-03
  • 2018-01-26
  • 2014-09-28
  • 2021-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多