PHP number_format不返回值

时间:2017-11-21 16:23:07

标签: php number-formatting

当前代码的相关部分:

$xml=simplexml_load_file($file);
$number=$xml->data->value;
imagettftext($image,$size,$angle,$x,$y,$colour,$font,$number);

这样做的目的是显示存储在xml文件中的值,该文件当前按原样工作。然而,更大的数字有点像眼睛。我认为number_format会解决这个问题,所以我试过了:

$xml=simplexml_load_file($file);
$number=$xml->data->value;
imagettftext($image,$size,$angle,$x,$y,$colour,$font,number_format($number));

$xml=simplexml_load_file($file);
$number=number_format($xml->data->value);
imagettftext($image,$size,$angle,$x,$y,$colour,$font,$number);

$xml=simplexml_load_file($file);
$number=$xml->data->value;
$number=number_format($number);
imagettftext($image,$size,$angle,$x,$y,$colour,$font,$number);

在所有三种情况下,我试图生成的图像上不会显示任何数字。就像我说的那样,没有number_format就可以正常工作。 xml文件的结构如下:

<xmldata>
    <data>
        <value>123456</value>
    </data>
</xmldata>

1 个答案:

答案 0 :(得分:2)

PHP不是黑盒子,因此您可以(并且应该)检查您的变量。您可以安装debuggerdump them to screen。您还需要启用完整的错误报告,因为您的代码应该触发您没有看到的警告:

  

警告:number_format()期望参数1为double,给定对象

我会跳几步并分享一个精心编写的片段:

object(SimpleXMLElement)#4 (1) {
  [0]=>
  string(6) "123456"
}
int(246912)
NULL
string(7) "246,912"

除了警告,它打印:

number_format()

解释:

  1. 大多数SimpleXML方法返回的对象在转换为字符串时,无论是隐式还是显式,都会显示相应的节点/属性值。

  2. number_format((string)$value) 不会转换为字符串,因为它需要一个数字。

  3. 修正:

    {{1}}