将字符串分解为变量

时间:2012-04-05 13:39:31

标签: php

有没有办法将字符串分解为变量,例如

some_function($min, $max, "3, 20");

这样,$ min被赋值为3,$ max被赋值为20。

我知道我可以简单地使用

$data = explode("3, 20");

只是想知道是否还有另一种方式。

2 个答案:

答案 0 :(得分:24)

PHP的语言结构list()可以通过分配数组对变量(甚至其他数组键)执行多次赋值。

list($min, $max) = explode(",", "3,20");

但是,您仍然需要将trim()应用于您的变量,因为$max值具有前导空格,或者将explode()替换为preg_split('/\s*,\s*/', $string)以将其拆分在逗号和周围的空白上。

注意:谨慎使用list()以确保您指定的数组包含与list()相同数量的元素的变量。它们在PHP 5.x中从右到左分配,而不是从左到右分配,因此如果您碰巧在左侧覆盖其右侧的原始内容,则可能会出现意外结果。详细信息请参见示例in the PHP docs

PHP 7更新: PHP 7更改了分配顺序行为,以便从左到右分配list()个参数

答案 1 :(得分:4)

PHP 7.1 起,有一个名为

的新功能

对称数组解构:速记数组语法([])现在可能 用于解构分配数组(包括 foreach),以替代现有list()语法,即 仍然受支持。

这意味着您现在可以执行以下操作:

[$one, $two] = explode(";", "one;two");
echo $one; // one
echo $two; // two

作为list()的替代方法,我自己发现它是一个非常优雅且易读的解决方案,它随7.1+一起发布……它是相同的,但是更好。

注意:如引号所示,您可以使用速记数组语法( [] )在foreach声明中分配变量,但这与问题无关,因此请检查!! >

文档:https://www.php.net/manual/en/migration71.new-features.php