【发布时间】:2010-12-04 11:58:16
【问题描述】:
$pos 在一个字符串中包含由空格分隔的两个数字。
$pos = 98.9 100.2
如何将其拆分为 2 个变量?我显然必须检查两者之间的空间。
之后我想有两个变量:
$number1 = 98.9
$number2 = 100.2
【问题讨论】:
标签: php split floating-point explode text-parsing
$pos 在一个字符串中包含由空格分隔的两个数字。
$pos = 98.9 100.2
如何将其拆分为 2 个变量?我显然必须检查两者之间的空间。
之后我想有两个变量:
$number1 = 98.9
$number2 = 100.2
【问题讨论】:
标签: php split floating-point explode text-parsing
list($number1, $number2) = explode(' ', $pos);
但是,在执行此操作之前,请确保字符串具有正确的格式。
【讨论】:
如果总是空格,则检查
array explode ( string $delimiter , string $string [, int $limit ] )
在你的情况下,你有
$foo = "1.2 3.4 invalidfoo"
$bits = explode(" ",$foo);
给你一个数组:
echo 0+$bits[0];
echo 0+$bits[1];
echo 0+$bits[3];
使用 +0 强制转换:)
【讨论】:
$bits[3]吗?
你可以使用:
$pos = "98.9 100.2";
$vals = preg_split("/[\s]+/", $pos);
list($number1, $number2) = $vals;
【讨论】:
\s 足以匹配文字空间。 +(一个或多个)量词对于示例字符串不是必需的。最终,示例字符串不需要正则表达式,因为定界子字符串根本不是可变的。此答案缺少教育解释。
使用sscanf() 代替explode() 或preg_split() 等通用字符串拆分函数,您可以立即对隔离值进行数据类型化。
对于示例字符串,使用 %f 两次将提取空格分隔的值并将两个数值转换为浮点数/双精度数。
代码:(Demo)
$pos = '98.9 100.2';
sscanf($pos, '%f %f', $number1, $number2);
var_dump($number1);
echo "\n";
var_dump($number2);
输出:
float(98.9)
float(100.2)
还有一种替代语法,其作用方式相同,但将值作为数组返回。 (Demo)
$pos = '98.9 100.2';
var_dump(sscanf($pos, '%f %f'));
输出:
array(2) {
[0]=>
float(98.9)
[1]=>
float(100.2)
}
【讨论】: