好问题!好的,让我们将其整理一下:
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']
。现在来解释一下
return
的情况。
array_map()
函数将一个函数(或“
可调用”)作为第一个参数,并将数组作为第二个参数。该函数针对数组中的每个元素运行,然后
array_map()
将该函数的返回值添加到
array_map()
返回的新数组中。这被称为一个
匿名函数:
function ($item) use ($key) {
return $item[$key];
}
这就像任何其他函数一样,除了它没有名称,而且它有use (...)
语法。 use ($key)
表示从外部函数(array_pluck()
) "导入"$key
,以便在此匿名函数内使用。在上面的示例中,$testArray
的每个元素都作为$item
传递给此匿名函数。当发生return $item[$key]
时,只有匿名函数返回(退出),而array_map()
继续到下一个元素。