开发中经常需要对从数据库中取出的列表数据进行处理,
看到的写法有下面三种,都可以得到相同的结果,个人一直习惯使用第一种。
从可读性和性能方面考虑哪一种更好?
列表数据如:
$list = [
[
'uid'=>100,
'username'=>'test100',
'nickname'=>'php_1',
'gender'=>1,
],
[
'uid'=>200,
'username'=>'test200',
'nickname'=>'php_2',
'gender'=>2,
],
[
'uid'=>300,
'username'=>'test300',
'nickname'=>'php_3',
'gender'=>0,
],
];
写法1,原数组中修改:
foreach($list as $k=>$v){
if($v['gender']==0){
$list[$k]['gender']='妖人';
}else{
$list[$k]['gender']='人';
}
}
写法2,原数组修改,使用引用:
foreach($list as &$v){
if($v['gender']==0){
$v['gender']='妖人';
}else{
$v['gender']='人';
}
}
写法3,定义一个新的数组:
$data = [];
foreach($list as $k=>$v){
if($v['gender']==0){
$v['gender']='妖人';
}else{
$v['gender']='人';
}
$data[] = $v;
}
使用1比较多
虽然2的写法最简洁,但是foreach下引用是有坑的
你在foreach外如果再次使用$v这个变量,可能就把foreach最后一个值给变了,当然能保证不用的话是不会发生这种问题的