PHP number_format 没有 return 值

PHP number_format does not return a value

当前代码的相关部分:

$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>

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

Warning: number_format() expects parameter 1 to be double, object given

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

<?php
$xml = simplexml_load_string('<xmldata>
    <data>
        <value>123456</value>
    </data>
</xmldata>');
$value = $xml->data->value;
var_dump($value, 2*$value, number_format($value), number_format(2*$value));

抛开警告,它打印:

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

解释:

  1. 大多数 SimpleXML 方法 return 对象,当隐式或显式转换为字符串时,显示相应的 node/attribute 值。

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

修复:

number_format((string)$value)