解析包含两个数字的字符串并将它们分配给两个变量

发布于 2024-10-05 23:59:47 字数 202 浏览 5 评论 0原文

$pos 在一个字符串中包含两个由空格分隔的数字。

$pos = 98.9 100.2

我怎样才能把它分成2个变量?我显然必须检查两者之间的空间。

之后我想有两个变量:

$number1 = 98.9
$number2 = 100.2 

$pos contains two numbers delimited by a space in one string.

$pos = 98.9 100.2

How can I split this into 2 variables? I obviously have to check for the space in between.

I would like to have two variables afterwards:

$number1 = 98.9
$number2 = 100.2 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

扮仙女 2024-10-12 23:59:47
list($number1, $number2) = explode(' ', $pos);

但是,在执行此操作之前,请确保字符串具有正确的格式。

list($number1, $number2) = explode(' ', $pos);

However, make sure the string has the right format before doing this.

风蛊 2024-10-12 23:59:47

如果它始终是一个空格,则检查

array explode ( string $delimiter , string $string [, int $limit ] )

And in your case you have

$foo = "1.2 3.4 invalidfoo"
$bits = explode(" ",$foo);

它给你一个数组:

echo 0+$bits[0];    
echo 0+$bits[1];
echo 0+$bits[3];

Use +0 to force the cast :)

If it is always a space, then check

array explode ( string $delimiter , string $string [, int $limit ] )

And in your case you have

$foo = "1.2 3.4 invalidfoo"
$bits = explode(" ",$foo);

which gives you an array:

echo 0+$bits[0];    
echo 0+$bits[1];
echo 0+$bits[3];

Use +0 to force the cast :)

相守太难 2024-10-12 23:59:47

你可以使用:

$pos = "98.9 100.2";
$vals = preg_split("/[\s]+/", $pos);
list($number1, $number2) = $vals;

You could use:

$pos = "98.9 100.2";
$vals = preg_split("/[\s]+/", $pos);
list($number1, $number2) = $vals;
冷月断魂刀 2024-10-12 23:59:47

使用 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)

有一种替代语法,其行为方式相同,但返回值如下一个数组。 (演示

$pos = '98.9 100.2';
var_dump(sscanf($pos, '%f %f'));

输出:

array(2) {
  [0]=>
  float(98.9)
  [1]=>
  float(100.2)
}

Using sscanf() instead of general-use string splitting functions like explode() or preg_split(), you can instantly data-type the isolated values.

For the sample string, using %f twice will extract the space-delimited values and cast the two numeric values as floats/doubles.

Code: (Demo)

$pos = '98.9 100.2';
sscanf($pos, '%f %f', $number1, $number2);
var_dump($number1);
echo "\n";
var_dump($number2);

Output:

float(98.9)

float(100.2)

There is an alternative syntax which will act the same way, but return the values as an array. (Demo)

$pos = '98.9 100.2';
var_dump(sscanf($pos, '%f %f'));

Output:

array(2) {
  [0]=>
  float(98.9)
  [1]=>
  float(100.2)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文