PHP⼆维数组去重算法
需求
现在有下⾯⼀组⼆维数组:
array(8) { [0]=> array(2) { [\"name\"]=>
string(4) \"name\" [\"value\"]=> string(6) \"青叶\" }
[1]=> array(2) { [\"name\"]=>
string(5) \"phone\" [\"value\"]=>
string(11) \"13812341234\" }
[2]=> array(2) { [\"name\"]=>
string(12) \"fileds_507[]\" [\"value\"]=>
string(12) \"我是青叶\" }
[3]=> array(2) { [\"name\"]=>
string(12) \"fileds_508[]\" [\"value\"]=> string(6) \"合肥\" }
[4]=> array(2) { [\"name\"]=>
string(12) \"fileds_509[]\" [\"value\"]=> string(3) \"男\" }
[5]=> array(2) { [\"name\"]=>
string(12) \"fileds_510[]\" [\"value\"]=> string(6) \"⾜球\" }
[6]=> array(2) { [\"name\"]=>
string(12) \"fileds_510[]\" [\"value\"]=> string(6) \"棒球\" }
[7]=> array(2) { [\"name\"]=>
string(12) \"fileds_511[]\" [\"value\"]=>
string(16) \"2016-12-15T11:15\" }}
需要将处于第⼆维键名为name,其值相同的数组的value合并,形成⼀个新的数组。
⽐如上⾯代码中的name为fileds_510的两个⼆维数组,就应该合并为⼀个值为⾜球,棒球的数组。思路
提到数组,再PHP中我们⾸先想到了循环,那么这⾥显然⽐较适合使⽤for循环处理,与冒泡排序相似,⼀个个⽐较,最好处理。
代码代码如下:
$public_info = 数组;
for ($i=0;$ifor ($j=$i+1;$jif ($public_info[$j]['name'] == $public_info[$i]['name']) { $public_info[$i]['value'] .= ',' . $public_info[$j]['value']; unset($public_info[$j]); } }}执⾏结果:
array(7) { [0]=> array(2) { [\"name\"]=>
string(4) \"name\" [\"value\"]=> string(6) \"青叶\" }
[1]=> array(2) { [\"name\"]=>
string(5) \"phone\" [\"value\"]=>
string(11) \"13812341234\" }
[2]=> array(2) { [\"name\"]=>
string(12) \"fileds_507[]\" [\"value\"]=>
string(12) \"我是青叶\" }
[3]=> array(2) { [\"name\"]=>
string(12) \"fileds_508[]\" [\"value\"]=> string(6) \"合肥\" }
[4]=> array(2) { [\"name\"]=>
string(12) \"fileds_509[]\" [\"value\"]=> string(3) \"男\" }
[5]=> array(2) { [\"name\"]=>
string(12) \"fileds_510[]\" [\"value\"]=>
string(13) \"⾜球,棒球\" }
[7]=> array(2) { [\"name\"]=>
string(12) \"fileds_511[]\" [\"value\"]=>
string(16) \"2016-12-15T11:15\" }}
总结
需求已搞定,只要遇到数组,我们第⼀个想到的除了现成的PHP⽅法之外,就是循环,不管是foreach还是for,上⾯例⼦是我项⽬处理的⼀个⾃定义表单编辑的⼩段过程,希望对⼤家思路有帮助。