如何用自己的函数/方法在PHP中模仿list()


How to imitate list() with own function / method in PHP?

我们都知道这样的调用:

list($a, $b) = explode(':', 'A:B');

但是如何创建一个可以以相同方式使用的自定义函数呢?

$obj->mylist($a, $b) = explode(':', 'A:B');
mylist($a, $b) = explode(':', 'A:B');

如果我使用上面的代码行,我总是得到:"不能在写上下文中使用方法返回值在[…]"如何定义函数/类方法接受这种类型的分配?如何通过爆炸()返回的数组?通过func_get_args () ?

当然,还有其他方法来赋值explosion()的结果,但那不是这个问题的主题。例如

$obj->mylist($a, $b, explode(':', 'A:B'));
mylist($a, $b, explode(':', 'A:B'));

这是不可能的,因为你不能编写一个可以用作左值的方法。

list()不是一个函数,而是一个语言结构,这就是为什么它可以按照它的方式使用。

你不能那样做。list()是一种语言结构,而不是函数,在PHP中没有办法使函数表现得像那样。这会导致语法错误。

你想从mylist($a, $b) = explode(':', 'A:B');到底是什么意思?如果它是list而不是mylist,它就相当于:

$arr = explode(':', 'A:B');
$a = $arr[0];
$b = $arr[1];
unset($arr);

对于左边的函数,如何重新定义它的含义呢?对于对象示例,您可以这样做:

list($obj->a, $obj->b) = explode(':', 'A:B');

你到底想要什么样的行为?也许还有别的办法