有没有办法将字符串分解为变量,例如
some_function($min, $max, "3, 20");
Run Code Online (Sandbox Code Playgroud)
这样,$ min被赋值为3,$ max被赋值为20.
我知道我可以简单地使用
$data = explode("3, 20");
Run Code Online (Sandbox Code Playgroud)
只是想知道是否还有另一种方式.
Mic*_*ski 27
PHP的语言构造list()可以通过分配数组来执行对变量(甚至其他数组键)的多个赋值.
list($min, $max) = explode(",", "3,20");
Run Code Online (Sandbox Code Playgroud)
但是,你仍然需要应用trim()到你的变量,因为该$max值将有一个前导空格,或更换explode()与preg_split('/\s*,\s*/', $string)将它拆分的逗号和空白.
注意:请务必小心,list()以确保您指定的数组包含与list()变量相同数量的元素.它们在PHP 5.x中从右到左分配,而不是从左到右分配,因此如果您碰巧在左侧覆盖其右侧的原始内容,则可能会出现意外结果.这是PHP文档中的示例详细说明.
PHP 7更新: PHP 7更改了赋值顺序行为,list()以便从左到右分配参数
从PHP 7.1 开始,有一个新功能叫做
对称数组解构:现在可以使用简写数组语法 ([]) 来解构数组以进行赋值(包括在 foreach 中),作为现有 list() 语法的替代方法,该语法仍然受支持。
这意味着您现在可以执行以下操作:
[$one, $two] = explode(";", "one;two");
echo $one; // one
echo $two; // two
Run Code Online (Sandbox Code Playgroud)
作为 list() 的替代方案,我发现它自己是一个非常优雅且可读的解决方案,它随 7.1+ 一起出现......它是相同的,但更好。
注意:正如引号所示,您可以使用速记数组语法 ( [] ) 在 foreach 声明中分配变量,但这与问题无关,因此请查看!
文档:https : //www.php.net/manual/en/migration71.new-features.php
| 归档时间: |
|
| 查看次数: |
10143 次 |
| 最近记录: |