【问题标题】:Is it possible to assign keys to array elements in PHP from a value column with less code? [duplicate]是否可以从代码较少的值列中为 PHP 中的数组元素分配键? [复制]
【发布时间】:2019-05-13 08:02:52
【问题描述】:

假设我有一个元素数组,它们本身就是数组,如下所示:

$array = [
    ['foo' => 'ABC', 'bar' => 'DEF'],
    ['foo' => 'ABB', 'bar' => 'DDD'],
    ['foo' => 'BAC', 'bar' => 'EFF'],
];

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

foreach ($array as $element) {
    $new_array[$element['foo']] = $element;
}
$array = $new_array;

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

【问题讨论】:

  • array_column($array, null, 'foo'),
  • 不需要array_combine,它是在array_column中构建的

标签: php arrays multidimensional-array


【解决方案1】:

注意array_column 也可以获取索引(第三个参数):

混合 $index_key = NULL

所以只需用作:

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

【讨论】:

    【解决方案2】:

    这是一个适合您的情况的衬垫,

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

    工作demo

    array_combine — 通过使用一个数组作为键和另一个数组作为其值来创建一个数组
    array_column — 从输入数组中的单个列返回值

    【讨论】:

      【解决方案3】:

      您也可以使用array_reduce 进行操作

      $new_array = array_reduce($array, function($carry, $item) {
          $carry[$item['foo']] = $item;
          return $carry;
      }, []);
      

      【讨论】:

        猜你喜欢
        • 2017-03-09
        • 1970-01-01
        • 2021-01-11
        • 2021-07-22
        • 2020-12-21
        • 2021-02-25
        • 2020-11-24
        • 2016-09-30
        • 1970-01-01
        相关资源
        最近更新 更多