如何从array_map PHP返回

时间:2016-05-21 07:20:07

标签: php return array-map

我对PHP很新,但是我理解一旦PHP在函数中命中return,它就会退出函数并返回到它被调用的位置。

我很担心array_map()下面的函数中的return如何或为什么以function array_plucked($toPluck, $arr) { return array_map(function($item) use($toPluck) { return $item[$toPluck]; }, $arr); } 开头,并且在函数内部有另一个函数。

$item[$toPluck]

每次在数组中循环时,|究竟发生了什么,结果存储在哪里?

1 个答案:

答案 0 :(得分:5)

好问题!好的,让我们清理一下:

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)表示从外部函数($key)“导入”array_pluck(),因此可以在此匿名函数中使用它。上例中的$testArray的每个元素都将作为$item传递给此匿名函数。当return $item[$key]发生时,只有匿名函数返回(退出),array_map()继续到下一个元素。