2017-08-16 185 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()