php 优化 for,php foreach使用&符优化

博客内容讲述了如何使用PHP处理包含时间戳和状态信息的数组。通过foreach循环,将字符串时间转换为时间戳,并根据status值赋予不同的状态描述,如'待审核'、'审核中'和'已审核'。文章探讨了使用&符号优化foreach循环以节省内存空间的方法。
摘要由CSDN通过智能技术生成

我们经常会遇到这样的情况

$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] => 已审核

)

) 嘿嘿 你是不是也这样干过?快去偷偷的改掉吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值