介绍
小编给大家分享一下PHP二维数组如何转换成一维数组,希望大家阅读完这篇文章后大所收获、下面让我们一起去探讨吧!
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
假设有下面一个二维数组:
$ user=阵列( & # 39;0 & # 39;=比;数组(& # 39;id # 39;=比;100年,& # 39;用户名# 39;=比;& # 39;a1 # 39;), & # 39;1 & # 39;=比;数组(& # 39;id # 39;=比;101年,& # 39;用户名# 39;=比;& # 39;a2 # 39;), & # 39;2 & # 39;=比;数组(& # 39;id # 39;=比;102年,& # 39;用户名# 39;=比;& # 39;a3 # 39;), & # 39;3 & # 39;=比;数组(& # 39;id # 39;=比;103年,& # 39;用户名# 39;=比;& # 39;a4 # 39;), & # 39;4 & # 39;=比;数组(& # 39;id # 39;=比;104年,& # 39;用户名# 39;=比;& # 39;a5 # 39;), );
现在要转换成一维数组,有两种情况:
一种是将指定列转换成一维数组,这在另一篇文章有总结:《PHP提取多维数组指定一列的方法大全》。
现在我们重点讲第二种情况,就是把所有的值都转换成一维数组,而且键值相同不会被覆盖,转换后的一维数组是这样的:
$=结果数组(100 & # 39;a1 # 39;, 101 & # 39; a2 # 39;, 102 & # 39; a3 # 39;, 103 & # 39; a4 # 39;, 104 & # 39; a5 # 39;);
主要有下面几个方法。
<强> 1的形式函数法强>
用形式()函数是较为快捷的方法:
$结果=形式($ user,函数(因此,美元价值){ 返回array_merge(美元)因此,元素(值)美元); },数组())
因为array_merge函数会把相同字符串键名的数组覆盖合并,所以必须先用array_value取出值后再合并。
如果第二维是数字键名,如:
$ user=阵列( & # 39;一个# 39;=比;数组(100 & # 39;a1 # 39;), & # 39;b # 39;=比;数组(101 & # 39;a2 # 39;), & # 39;c # 39;=比;数组(102 & # 39;a3 # 39;), & # 39;d # 39;=比;数组(103 & # 39;a4 # 39;), & # 39;e # 39;=比;数组(104 & # 39;a5 # 39;), );
那么直接这样就可以了:
$结果=形式($ user, & # 39; array_merge& # 39;,数组())
<强> 2 array_walk_recursive函数法强>
用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一维数组。
=[]美元结果; array_walk_recursive ($ user、功能(价值美元)使用(,因此美元){ array_push(因此,美元价值); });
例如,下面这个多维数组:
$ user4=阵列( & # 39;一个# 39;=比;数组(100 & # 39;a1 # 39;), & # 39;b # 39;=比;数组(101 & # 39;a2 # 39;), & # 39;c # 39;=比;阵列( & # 39;d # 39;=比;数组(102 & # 39;a3 # 39;), & # 39;e # 39;=比;数组(103 & # 39;a4 # 39;), ), );
用这个方法后就变成:
$=结果数组(100 & # 39;a1 # 39;, 101 & # 39; a2 # 39;, 102 & # 39; a3 # 39;, 103 & # 39; a4 # 39;);
<强> 3到函数法强>
用到和形式函数的方法类似,如下:
=[]美元结果; 到函数(美元值)使用(,因此美元){ 结果(结果=array_merge美元,元素(值)美元); },$ user);
只是需要多声明一个空的结果数美元组。
另外,也可以用array_walk的方法,和foreach循环的方法,原理和上面一样。
看完了这篇文章,相信你对PHP二维数组如何转换成一维数组有了一定的了解,想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!