Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果数组由函数返回,PHP无法使用list转换数组?_Php_Arrays_Function - Fatal编程技术网

如果数组由函数返回,PHP无法使用list转换数组?

如果数组由函数返回,PHP无法使用list转换数组?,php,arrays,function,Php,Arrays,Function,这件事难倒我了。我想弄明白为什么这行不通。我有一个返回数组的函数。我想使用list将数组放入变量中。它似乎不起作用。以下是我所拥有的: function($x, $y, $z){ return array('x' => $x, 'y' => $y, 'z' => $z); } list($x, $y, $z) = function($x, $y, $z); 然而,这似乎并没有将变量返回到$x、$y、$z变量中 相反,我必须这样做: function($x, $y,

这件事难倒我了。我想弄明白为什么这行不通。我有一个返回数组的函数。我想使用list将数组放入变量中。它似乎不起作用。以下是我所拥有的:

function($x, $y, $z){
    return array('x' => $x, 'y' => $y, 'z' => $z);
}

list($x, $y, $z) = function($x, $y, $z);
然而,这似乎并没有将变量返回到$x、$y、$z变量中

相反,我必须这样做:

function($x, $y, $z){
    return array('x' => $x, 'y' => $y, 'z' => $z);
}

$array = function($x, $y, $z);
$x = $array['x'];
$y = $array['y'];
$z = $array['z'];
在这件事上我做错了什么?列表函数是否有某种限制,会阻止它工作?注意,上述函数显然不是实际函数或定义不正确,仅作为示例提供。

来源:

列表仅适用于数值数组,并假定数值索引从0开始

只需将关键点更改为数字,即可正常工作:

function($x, $y, $z){
    return array($x, $y, $z);
    // OR: return array_values(array('x' => $x, 'y' => $y, 'z' => $z));
}

list($x, $y, $z) = function($x, $y, $z);
您可以使用函数创建如下变量:

function foo($x, $y, $z){
    return array('x' => $x, 'y' => $y, 'z' => $z);
}

extract(foo($x, $y, $z));

// or you have to use the values of the array returned.
list($x, $y, $z) = array_values(foo($x, $y, $z));

由于list函数仅适用于数字键或无键,因此必须先从数组中删除键,然后才能使用list将它们插入变量中

list($x, $y, $z) = array_values(function($x, $y, $z));

感谢您关于数组索引的说明。这使我能够通过使用数组_值来解决问题。