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

时间:2019-03-05 20:14:34

标签: php arrays associative-array

鉴于我有一个简单的非关联数组$values,其中SomeObject个项目的索引分别为0、1、2等。

构造从原始项目提取的某些值索引的关联数组$valuesByIndex的最佳语法是什么?

我构造的是:

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

这相当等于:

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

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

寻找非常紧凑的语法。

1 个答案:

答案 0 :(得分:0)

在这篇文章中:

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

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

我们可以简单地将$key($val)替换为函数$val->getSomeProperty()的内容

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

因为如果函数返回此$val->getSomeProperty(),我们可以直接将其放在其中并完全放弃该函数。

但是,如果这是来自数据库调用,则可以使用(在PDO中)PDO::FETCH_GROUP,它将{Select“的第一列作为顶级键。