通过索引索引PHP多级数组


Indexing PHP multilevel array by an Index

我有一个多维数组(来自数据库的行集),我想创建一个完全相同的数组,除了键将是数组中的一个项。

例如,如果我有:

array(
[1] => array("x" => "aa", "y" => 12, "z" => "more data...", ...),
[2] => array("x" => "bb", "y" => 13, "z" => "more data...", ...),
[3] => array("x" => "cc", "y" => 14, "z" => "more data...", ...),
[4] => array("x" => "dd", "y" => 15, "z" => "more data...", ...),
[5] => array("x" => "ee", "y" => 16, "z" => "more data...", ...).
...
)

然后调用reindex(myarray, "x")它会返回为:

array(
["aa"] => array("x" => "aa", "y" => 12, "z" => "more data...", ...),
["bb"] => array("x" => "bb", "y" => 13, "z" => "more data...", ...),
["cc"] => array("x" => "cc", "y" => 14, "z" => "more data...", ...),
["dd"] => array("x" => "dd", "y" => 15, "z" => "more data...", ...),
["ee"] => array("x" => "ee", "y" => 16, "z" => "more data...", ...).
...
)

我以为PHP提供了类似的东西,但我发现的只是array_column,它只返回列的值。

对此有什么想法吗?还是我只需要自己写函数?

谢谢。

没有现有的函数,因为使用可用的函数原语来实现这个特定的功能是微不足道的。它不够复杂或常见,不足以保证在核心中有自己的专门功能。

array_combine(array_map(function (array $i) { return $i['x']; }, $array), $array)