dsfdsf8888 2019-03-05 20:14
浏览 678

PHP:将数组转换为索引数组

Given I have an simple non-associative array $values of SomeObject items indexed by 0, 1, 2, etc.

What is the best syntax to construct associative array $valuesByIndex indexed by some value extracted from original items?

What I constructed is:

$key = function($val) {
   return $val->getSomeProperty();
};
$valuesByIndex = array_combine(array_map($key, $values), $values);

Which is pretty equals to:

$key = function($val) {
   return $val->getSomeProperty();
};

$valuesByIndex = [];
foreach ($values as $val) {
    $valuesByIndex[$key($val)] = $val;
}

Looking for pretty compact syntax.

  • 写回答

1条回答 默认 最新

  • duanfuchi7236 2019-03-05 20:34
    关注

    In this piece:

    $key = function($val) {
       return $val->getSomeProperty();
    };
    
    $valuesByIndex = [];
    foreach ($values as $val) {
        $valuesByIndex[$key($val)] = $val;
    }
    

    We can simply replace $key($val) with the contents of the function $val->getSomeProperty() Which gives us

    $valuesByIndex = [];
    foreach ($values as $val) $valuesByIndex[$val->getSomeProperty()] = $val;
    

    Because if the function returns this $val->getSomeProperty() we can just put it right in there and forgo that function completely.

    However if this is from a DB call you may be able to use (in PDO) PDO::FETCH_GROUP which takes the first column of the Select and makes it the top level key.

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮