已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
2小时前关门了。
Improve this question
在我的表中,我有一个价格可以是字符串或数字,但我试图将字符串转换为数字,但它确实工作。
在原点,数字与表中的数字相同(一行是名称,另一行是价格)
Apple iPhone 13 128 Go Minuit | 1 379€00
Apple iPhone 14 128 Go Minuit | 1 379€00
Apple iPhone 14 128 Go Lumière Stellaire | 919€00
Apple iPhone 14 Pro 128 Go Noir Sidéral | 919€00
重构后,我有了这个,你可以看到它是一个数字(num)还是一个字符串
Apple iPhone 13 128 Go Minuit | 1 379.00
Apple iPhone 14 128 Go Minuit | 1 379.00
Apple iPhone 14 128 Go Lumière Stellaire | 919.00 num
Apple iPhone 14 Pro 128 Go Noir Sidéral | 919.00 num
如果我试着应用它:
我也尝试了floatval,但不工作
if (is_string($price_format)) {
$price_format = number_format((float)$price_format, 2, '.', '');
}
结果是:
Apple iPhone 13 128 Go Minuit | 1.00 num
Apple iPhone 14 128 Go Minuit | 1.00 num
Apple iPhone 14 128 Go Lumière Stellaire | 919.00 num
正如你所看到的,我有1.00,而不是价格,但一切都是数字
我需要结果是类似1379.00的价格数字,而不是字符串
下面我的方法
foreach ($result as $item) {
$price = $item['1'];
$convert_array = ['$', '€', '£', '¥', '₩', '₹', '₽', '฿', '₺', '₴'];
foreach ($convert_array as $symbol) {
if (strpos($price, $symbol) !== false) {
$price = str_replace($symbol, '.', $price);
$price = preg_replace('/\. /', '', $price, 1);
$price = str_replace(',', '.', $price);
break;
}
}
$price_format = trim($price);
if (substr($price_format, -1) == '.') {
$price_format = substr($price_format, 0, -1);
}
/*
if (is_string($price_format)) {
$price_format = number_format((float)$price_format, 2, '.', '');
}
*/
if (is_numeric($price_format)) {
$price_format = $price_format . ' num';
}
print_r($price_format);
}
1条答案
按热度按时间py49o6xq1#
如果输入数字的千位分隔符是空格,你可以尝试先删除空格(空格之后的任何内容都会被
float
转换忽略),然后使用' '
作为number_format()
的最后一个参数再次添加它:在这里的例子(https://3v4l.org/OCSWN)中,结果是: