我们经常会遇到这样的情况
$arr = [
['name'=>'测试1','time'=>'2016-03-01','status'=>'1'],
['name'=>'测试2','time'=>'2016-03-02','status'=>'2'],
['name'=>'测试3','time'=>'2016-03-03','status'=>'3'],
['name'=>'测试4','time'=>'2016-04-01','status'=>'1'],
['name'=>'测试5','time'=>'2016-04-02','status'=>'2'],
['name'=>'测试6','time'=>'2016-04-03','status'=>'3'],
];
数据库中查询出的数据如上 现在需要将time字断专为时间戳 status 1,2,3对应待审核 审核中 已审核
今天看了位同学的代码如下
foreach($arr as $key=>$val){
$arr[$key]['time'] = strtotime($val['time']);
if($val['status'] == '1'){
$arr[$key]['status'] = '待审核';
}else if($val['status'] == '2'){
$arr[$key]['status'] = '审核中';
}else{
$arr[$key]['status'] = '已审核';
}
}
上述代码没什么问题 foreach()将键和值分别写入数组 然后链表 但实际上我们可以使用&符来优化一下
foreach($arr as &$val){
$val['time'] = strtotime($val['time']);
if($val['status'] == '1'){
$val['status'] = '待审核';
}else if($val['status'] == '2'){
$val['status'] = '审核中';
}else{
$val['status'] = '已审核';
}
}上述优化的好处是我们节省了保存$key的内存空间(如果是个很大的数组就有意义) &引用指向统一内存空间 执行结果是一样的
如下:
Array
(
[0] => Array
(
[name] => 测试1
[time] => 1456761600
[status] => 待审核
)
[1] => Array
(
[name] => 测试2
[time] => 1456848000
[status] => 审核中
)
[2] => Array
(
[name] => 测试3
[time] => 1456934400
[status] => 已审核
)
[3] => Array
(
[name] => 测试4
[time] => 1459440000
[status] => 待审核
)
[4] => Array
(
[name] => 测试5
[time] => 1459526400
[status] => 审核中
)
[5] => Array
(
[name] => 测试6
[time] => 1459612800
[status] => 已审核
)
) 嘿嘿 你是不是也这样干过?快去偷偷的改掉吧!