2017-08-16 123 views
0

我在PHP中使用explode,因为我需要分隔字符串。这种类型:单独的字符串与爆炸php

$Data = '10 x 4'; 

我需要分开数字,因为然后我对它们进行数学运算。当我们的代码是整数时,我的代码运行良好。如果我有这种类型的字符串10 x 2.5它不会考虑将是, 5的小数部分。我怎么能让我也考虑这个部分呢?

$data = '10 x 2,5'; 
$array = explode("x", $data); 
$total = $array[0]*$array[1]; 
+0

只有','的字段 – max

+0

由于它是相关页面/回答,因此可能有用:https://stackoverflow.com/a/44987003/2943403 – mickmackusa

回答

1

试试这个。只需将“,”替换为“。”。它正在工作。

$data = '10 x 2,5'; 
$data = str_replace(',','.','10 x 2,5'); 
$array = explode("x", $data); 
echo $total = $array[0]*$array[1]; 
+0

这个答案在以','或'。'分隔的小数点的情况下非常正确。谢谢 – max

+0

这也适用于第一位小数东部的情况?例如:'7.5 x 10'或'7.5 x 7.5' – max

2

以下是您可以采取的两种方法。如果你能逗号分隔符更改为一个周期/句号:

$data = '10 x 2.5'; 
$floats = array_map('floatval', explode(' x ', $data)); 
echo $floats[0] * $floats[1]; 

演示:https://3v4l.org/hFMEt

,或者你可以使用正则表达式这也将确认你有正确的数据格式。

echo preg_replace_callback('/(\d+(?:[.,]\d+)?)\h*x\h*(\d+(?:[.,]\d+)?)/', function($match) { 
    return str_replace(',' , '.', $match[1]) * str_replace(',' , '.', $match[2]); 
    }, $data); 

PHP演示:https://3v4l.org/I82Gt
正则表达式演示:https://regex101.com/r/tTcJSp/1/

0

试试这个:

<?php 
$data = '10 x 2,5'; 
$array = explode("x", $data); 
$total = floatval(str_replace(',', '.', $array[0]))*floatval(str_replace(',', '.', $array[1])); 
?> 

这里str_replace()是用来检查是否有字符串中, ,然后转换成其浮动值。 希望这有助于。

+0

在'$ data'上使用'str_replace'将节省一对调用,然后你可以在'$ array'上映射'floatval'。 (https://3v4l.org/nj1hi) – chris85

+0

@ chris85这是真的。我保持它的独立性,考虑到可能有一个原因,为什么在$ data中有''',并且用'x'爆炸是所需的第一件事。谢谢。 –

0
$data = '10 x 2,5'; 
$array = explode("x", $data); 

$decimal =$array[1]; 

//replace the comma with dot 
$decimal_formated = str_replace(',', '.', $decimal); 
//format the string to float 
$decimal_formated = (float)$decimal_formated; 
//OR $decimal_formated = floatval($decimal_formated); 

//get total 
$total = $array[0]*$decimal_formated; 

//french format $total, with comma 
$total_with_comma =number_format($total, 1, ',', ' '); 


echo $decimal.'</br>'; //output 2,5 
echo $decimal_formated.'</br>'; //output 2.5 
echo $total.'</br>'; //output 25 
echo $total_with_comma.'</br>'; // output 25,0 

您可以使用number_format()floatval()