substr不在数组中工作

时间:2010-07-02 08:33:09

标签: php

数组([0] =>数组([0] => 21.2694美元)[1] =>数组([0] => 21.2694美元))

(这是basicall google货币转换器)

echo $ arr [0] [0]; //输出是21.2694 usd

但我希望输出像21.26美元

尝试的是, echo substr($ arr [0] [0],0,5); //对于这个子行,我的预期输出是21.26

但我只得到空白页,

我犯了错误

如果输入为21.2694 USD

,我想要21.26USD作为输出

基本上我在做货币转换器(google api)

但api在此产生的结果为29.5645美元,我想以29.56美元计算,

这是我的代码段,

   
    $from_currency = "GBP";
    $selected_currency = 'USD';
    $txt_cash_price = '10';
    $txt_card_price = '14';

    $get_currency = file_get_contents("http://www.google.com/finance/converter?a=$txt_cash_price&from=$from_currency&to=$selected_currency");
    preg_match_all("/(.*)/", $get_currency, $matches,PREG_PATTERN_ORDER);
    $caprice = $matches[0][0];

       OUPUT SOMTHING LIKE THIS 15.2070 USD

但我希望输出为15.20美元

5 个答案:

答案 0 :(得分:3)

您应该使用number_format()documentation):

string number_format ( float $number [, int $decimals ] )

所以这是一个例子:

echo number_format((float)$arr[0][0], 2), " USD";

这里发生的是我们从数组中获取正确的值,并将其转换为float。这使PHP删除了值的文本部分,因此您只剩下数字。然后number_format将其格式化为包含2位小数,最后我们回显" USD"

答案 1 :(得分:1)

您可以使用round

$str = '15.2070 USD';
echo round($str,2)." USD"; //15.21 USD

答案 2 :(得分:0)

请勿使用substr()。使用number_format()

echo number_format($arr[0][0], 2);
但是,你这样做的方式原则上也应该有效(尽管这不是最好的方法)。制作$arr[0][0]的测试输出,以查看它是否包含任何值。

答案 3 :(得分:0)

你需要将数组的值设为float实例,所以这样做

$price = (float) $arr[0][0]; //这会将它转换为纯浮点数。

然后你可以使用number_format来获得恰到好处的小数位。

继承我的测试用例:

$myArray = array(
   array(
      '21.34957 USD.'
   )
);

$float = (float)$myArray[0][0]; //21.34957 | removes the text and turns to a float.

echo number_format($float, 2); //21.35

答案 4 :(得分:0)

如果您只想要普通数字,而没有number_format()添加的额外格式,则可以使用sprintf()

 echo sprintf('%0.2f', 21.2694);    -> 21.26