return 如何从 array_map PHP 开始工作

How return is working from array_map PHP

我是 PHP 的新手,但我知道一旦 PHP 在函数中点击 return,它将退出函数并且 return到它被调用的地方。

我对以下函数的方式或原因感到困惑 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);
}

这样比较容易理解

首先,此函数的目标是 return 一个 来自多维数组的特定键 值的一维数组。以下是示例:

$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 >

如您所见,对于父数组中的每个数组,这分别是 returning $testArray[<index>]['xxx']$testArray[<index>]['yyy']

现在解释一下 return 是怎么回事。 array_map() function takes a function (or "Callable")作为第一个参数,一个数组作为第二个参数。函数是对数组中的每个元素运行,然后array_map()加上return该函数的值到 array_map() returns.

的新数组

这叫做 anonymous function:

function ($item) use ($key) {
    return $item[$key];
}

它就像任何其他函数一样,除了它没有名称,而且它有 use (...) 语法。 use ($key) 表示从外部函数 (array_pluck()) 到 "import" $key,因此它可以在这个匿名函数内部使用。上例中 $testArray 的每个元素都作为 $item 传递给此匿名函数。当 return $item[$key] 发生时,只有匿名函数 returns(退出),array_map() 继续到下一个元素。