鉴于我有一个简单的非关联数组$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;
}
寻找非常紧凑的语法。
答案 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“的第一列作为顶级键。