2010-07-02 33 views
0

阵列工作([0] =>数组([0] => 21.2694 USD)[1] =>数组([0] => 21.2694 USD))SUBSTR不是在阵列

(这是basicall谷歌货币转换器)

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

但我想输出像21.26 USD

什么是尝试是, 回波SUBSTR($ ARR [0] [0],0,5); //对于这个SUBSTR线我预计产量21.26

,但我想起来了空白页,

如果我犯的错误

我想21.26USD作为输出,如果我给输入为21.2694美元

基本上是做货币转换器(谷歌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美元

+0

使用'error_reporting'和'display_e启用错误报告rrors'。 – Sjoerd 2010-07-02 08:36:07

+0

产量是不是21.27 USD? – 2010-07-02 08:58:07

+0

你想要截断或舍入结果吗? – Toto 2010-07-02 09:04:02

回答

1

您可以使用round

$str = '15.2070 USD'; 
echo round($str,2)." USD"; //15.21 USD 
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"

+0

你不应该让number_format处理删除文本,因为它设计为在参数中使用字符串,并且没有设置类型,它会导致比需要更多的内存。 – RobertPitt 2010-07-02 08:47:32

0

请勿为此使用substr()。使用number_format()。但是,你这样做的方式也应该在原则上工作(尽管这不是最好的方式)。测试输出$arr[0][0]以查看它是否包含任何值。

+0

echo number_format($ caprice,2);得到的输出为0.00 – Bharanikumar 2010-07-02 09:25:08

+0

@Bharani啊,你需要删除“USD”。尝试'rtrim($ caprice,“a..z”);'或@Vegard建议使用'(float)'。 – Unicron 2010-07-02 09:45:23

0

那么你需要做阵列的价值浮动实例,以便做到这一点

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

我不喜欢在该数组中创建任何chane, 如果我无法删除USD意味着我只是使用substr, 但我不知道为什么,我无法对数组值进行任何更改 – Bharanikumar 2010-07-02 09:24:10

+0

Cna你请让你的评论可读。 “如果我不能删除”,“我不能做任何chane”,“不能做”? – RobertPitt 2010-07-02 09:26:48

0

如果你只想要简单的数字,与没有额外的格式是number_format()增加了,你可以使用sprintf()

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