在PHP中,是否可以用较少的代码从值列中为数组元素分配键?

2fjabf4q  于 2023-11-16  发布在  PHP
关注(0)|答案(3)|浏览(170)

此问题在此处已有答案

Generate an associative array from an array of rows using one column as keys and another column as values(3个答案)
Convert value from specific multidimensional array key into key in new array with original arrays as value(1个答案)
去年关闭。
让我们假设我有一个元素数组,它们本身就是数组,如下所示:

  1. $array = [
  2. ['foo' => 'ABC', 'bar' => 'DEF'],
  3. ['foo' => 'ABB', 'bar' => 'DDD'],
  4. ['foo' => 'BAC', 'bar' => 'EFF'],
  5. ];

字符串
要将foo字段的值设置为数组的键,我可以这样做:

  1. foreach ($array as $element) {
  2. $new_array[$element['foo']] = $element;
  3. }
  4. $array = $new_array;


代码自然是微不足道的,但我一直在想是否有一个内置的,可以为我做同样的事情。

6psbrbz9

6psbrbz91#

注意array_column也可以获取索引(第三个参数):
mixed $index_key = NULL
因此,只需使用:

  1. array_column($array, null, 'foo');

字符串

sdnqo3pr

sdnqo3pr2#

这里有一个你的箱子的衬垫,

  1. $temp = array_combine(array_column($array, 'foo'), $array);

字符串
工作中demo
array_combine-使用一个数组作为键,另一个数组作为其值来创建数组
array_column-返回输入数组中单个列的值

ca1c2owp

ca1c2owp3#

也可以使用array_reduce

  1. $new_array = array_reduce($array, function($carry, $item) {
  2. $carry[$item['foo']] = $item;
  3. return $carry;
  4. }, []);

字符串

相关问题