关于选择引用方式处理数组还是新开辟变量存放数组的区别以及数组的特性
1.使用引用方式去调整数据还是新建数组遍历的好?
需求:将二维数组中的sex字段去除并新增class字段等于大班。
第一种:使用引用方式
public function test15(){
$arr = [
["name"=>"张三","age"=>18,"sex"=>1],
["name"=>"张三","age"=>19,"sex"=>1],
["name"=>"张三","age"=>18,"sex"=>1],
["name"=>"张三","age"=>18,"sex"=>1]
];
foreach($arr as $k=>&$v){
unset($v["sex"]);
$v["class"] = "大班";
}
echo "<pre>";
print_r($arr);
}
得到结果如下:
Array
(
[0] => Array
(
[name] => 张三
[age] => 18
[class] => 大班
)
[1] => Array
(
[name] => 张三
[age] => 19
[class] => 大班
)
[2] => Array
(
[name] => 张三
[age] => 18
[class] => 大班
)
[3] => Array
(
[name] => 张三
[age] => 18
[class] => 大班
)
)
第二种:使用新创建数组方式
public function test15(){
$arr = [
["name"=>"张三","age"=>18,"sex"=>1],
["name"=>"张三","age"=>19,"sex"=>1],
["name"=>"张三","age"=>18,"sex"=>1],
["name"=>"张三","age"=>18,"sex"=>1]
];
$out = array();
foreach($arr as $k=>$v){
$arr = array(
"name"=>$v["name"],
"age"=>$v["age"],
"class"=>"大班"
);
$out[]= $arr;
}
echo "<pre>";
print_r($out);
}
得到的结果是一样的;
区别一:
- 使用引用方式是在原来数组中修改的,只是删除和添加达到效果一致的,如果原来数组中的值变动,可能数组中增加某个字段,那么还要想输出的结果是刚刚的那么回事,就要重新调整引用的循环代码;好处就在于简洁。
- 没有使用引用方式的代码,是新创建的一个变量空间与源数据是隔离开来的,不好的点就是没有引用简洁,好的点是隔离开来,如果源数据变化不会改变其结果(导出excel功能得以呈现);
区别二:
- 使用引用方式的数组,内容顺序被限制,无法调整元素之前的位置;
- 使用创建新的空间数组,可以调整循环体中的元素位置,从而输出得数组位置是可以得到调整的,在我们的项目中经常会根据数组顺序去做一些事情,比如yy中的javascript经常会用,所以数组是可以自定的,位置可以重新调整,内容也可以调整,自己创建新数组重新映射一下就可以了。


浙公网安备 33010602011771号