我们都知道这样的调用:
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');
你到底想要什么样的行为?也许还有别的办法