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