有没有办法将字符串分解为变量,例如
some_function($min, $max, "3, 20");
这样,$ min被赋值为3,$ max被赋值为20。
我知道我可以简单地使用
$data = explode("3, 20");
只是想知道是否还有另一种方式。
答案 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