PHP number_格式不返回值

PHP number_格式不返回值,php,number-formatting,Php,Number Formatting,现行法规的相关章节: $xml=simplexml_load_file($file); $number=$xml->data->value; imagettftext($image,$size,$angle,$x,$y,$colour,$font,$number); 其目标是显示存储在xml文件中的值,该文件当前按原样工作。然而,更大的数字有点碍眼。我认为数字格式可以解决这个问题,所以我尝试: $xml=simplexml_load_file($file); $number=$xm

现行法规的相关章节:

$xml=simplexml_load_file($file);
$number=$xml->data->value;
imagettftext($image,$size,$angle,$x,$y,$colour,$font,$number);
其目标是显示存储在xml文件中的值,该文件当前按原样工作。然而,更大的数字有点碍眼。我认为数字格式可以解决这个问题,所以我尝试:

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

以及:

在这三种情况下,我试图生成的图像上都没有显示数字。就像我说的,如果没有数字格式,它就可以正常工作。xml文件的结构如下所示:

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

123456

PHP不是黑盒,因此您可以(也应该)检查变量。您可以安装或。您还需要启用完全错误报告,因为您的代码应该触发您未看到的警告:

警告:number_format()要求参数1为双精度,给定对象

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

<?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));
解释如下:

  • 大多数SimpleXML方法返回的对象在转换为字符串时(隐式或显式)显示相应的节点/属性值

  • number\u format()
    不强制转换为字符串,因为它需要一个数字

  • 修正:


    PHP不是一个黑盒,因此您可以(也应该)检查您的变量。您可以安装或。您还需要启用完全错误报告,因为您的代码应该触发您未看到的警告:

    警告:number_format()要求参数1为双精度,给定对象

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

    <?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));
    
    解释如下:

  • 大多数SimpleXML方法返回的对象在转换为字符串时(隐式或显式)显示相应的节点/属性值

  • number\u format()
    不强制转换为字符串,因为它需要一个数字

  • 修正:


    number\u format()总是返回一个值,在这种情况下为NULL(如果启用了错误日志记录,则会发出警告),请在调用number\u format()之前尝试将xml中的值强制转换为int或float(var\u dump$xml->data->value;以查看实际返回的内容;它应该是simplexmlelement对象)var_dump会导致500个错误。如果你得到500个错误,那么你输入了一些东西或创建了一个错误-我也这么认为,尽管我没有得到语法错误。我认为阿尔瓦罗的回答解决了这个问题。首先要仔细检查一切是否正常……number_format()总是返回一个值,在这种情况下,会返回一个NULL(如果启用了错误日志记录,则会发出警告),在调用number_format()之前,请尝试将xml中的值强制转换为int或float(var_dump$xml->data->value;查看实际返回的内容;它应该是一个simplexmlelement对象)var_dump会导致500个错误。如果你得到500个错误,那么你输入了一些东西或创建了一个错误-我也这么认为,虽然我没有语法错误。我认为Alvaro的回答解决了这个问题。只是先仔细检查一下所有的东西就行了…看起来修复工作正常。关于错误报告,通常这很容易解决大多数情况下都这样做,但是在这个特殊情况下,当您生成图像时,您会如何查看这些错误?您会输出到文件吗?我通常只需在浏览器中按Ctrl+U键即可查看源代码。看起来修复程序起到了作用。关于错误报告,通常情况下,对于大多数情况下,这很容易做到,但在这个特殊情况下,当您使用ge时生成图像时,如何查看这些错误?是否输出到文件?我通常只需在浏览器中按Ctrl+U键即可查看源代码。
    <?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"
    
    number_format((string)$value)