当我必须预先声明数组public function convertIdStringToMongoID($array_id = array())
{
$keys = [];
foreach ($array_id as $k => $id) {
$keys[] = new \MongoId($id);
}
return $keys;
}
时,我在某些类中有很多代码:
<div id="grid1" ui-grid="$ctrl.gridOptions" class="grid" ui-grid-auto-resize style="{{$ctrl.getTableHeight()}}"></div>
getTableHeight() {
var offsetValue = 365;
return "height: " + parseInt(window.innerHeight - offsetValue ) + "px!important";
}
现在看起来很好,如何让这更美丽?
答案 0 :(得分:3)
根据this docs可以尝试映射你的数组,如下所示:
public function convertIdStringToMongoID($array_id = array())
{
$func = function($id) {
return new \MongoId($id);
};
return array_map($func, $array_id);
}
或者根据this example,例如:
public function convertIdStringToMongoID($array_id = array())
{
return array_map(array($this, 'to_id'), $array_id);
}
private function to_id($id) {
return new \MongoId($id);
}
这两个例子都使用函数式编程方法。
答案 1 :(得分:1)
您发布的代码干净而且快速。您可以使用array_map()
和anonymous function:
Gmail
有些人可能认为它更漂亮,有些人会说这样阅读和理解它会稍微困难一些 两者都同意此版本的执行时间略长于您的版本。但是,差异并不显着,还有其他地方可以搜索优化(访问磁盘和外部资源,数据库查询,Mongo等)。