我对PHP很新,但是我理解一旦PHP在函数中返回一个返回函数,它将退出函数并返回到调用它的位置.
我很困惑如何或为什么在array_map()下面的函数以return开头并且在函数内部有另一个函数.
function array_plucked($toPluck, $arr) {
return array_map(function($item) use($toPluck) {
return $item[$toPluck];
}, $arr); }
每次它循环遍历数组时,$item [$toPluck]究竟发生了什么,结果存储在哪里?
解决方法:
好问题!好的,让我们清理一下:
function array_pluck($key, $array)
{
return array_map(function ($item) use ($key) {
return $item[$key];
}, $array);
}
用这种方式理解起来要容易一些.
首先,此函数的目标是从多维数组返回特定键值的一维数组.以下是示例:
$testArray = array(
array("xxx" => "hello", "yyy" => "goodbye"),
array("xxx" => "hi", "yyy" => "bye"),
array("xxx" => "hey", "yyy" => "peace"),
);
php > var_dump(array_pluck('xxx', $testArray));
array(3) {
[0]=>
string(5) "hello"
[1]=>
string(2) "hi"
[2]=>
string(3) "hey"
}
php > var_dump(array_pluck('yyy', $testArray));
array(3) {
[0]=>
string(7) "goodbye"
[1]=>
string(3) "bye"
[2]=>
string(5) "peace"
}
php >
如您所见,这将分别为父数组中的每个数组返回$testArray [< index>] [‘xxx’]和$testArray [< index>] [‘yyy’].
现在来解释一下回归的情况. array_map()
函数将函数(或“Callable”)作为第一个参数,将数组作为第二个参数.该函数针对数组中的每个元素运行,然后array_map()将该函数的返回值添加到array_map()返回的新数组中.
function ($item) use ($key) {
return $item[$key];
}
它就像任何其他函数一样,除了它没有名称,它确实有use(…)语法. use($key)表示从外部函数(array_pluck())“导入”$key,因此可以在此匿名函数中使用它.上面示例中$testArray的每个元素都作为$item传递给此匿名函数.当返回$item [$key]时,只有匿名函数返回(退出),而array_map()继续到下一个元素.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。