[英]php array count same key after merge to separate comma
我使用的是codeigniter 3.x版本。
这是传递给ajax的值。
Array (
[0] => 10:4
[1] => 11:1
[2] => 12:2
[3] => 13:3
[4] => 14:4
[5] => 15:5
[6] => 16:4
[7] => 17:3
[8] => 18:2
[9] => 19:1
[10] => 1:4 // duplicate
[11] => 1:5 // duplicate
[12] => 20:2
[13] => 21:3
[14] => 22:4
[15] => 23:5
[16] => 24:4 // duplicate
[17] => 24:5 // duplicate
[18] => 25:2
[19] => 2:5
[20] => 3:4
[21] => 4:4
[22] => 5:4
[23] => 6:3
[24] => 7:2
[25] => 8:3
[26] => 9:2 // duplicate
[27] => 9:4 // duplicate
)
我想插入数据库,处理数组
首先,排序以使用natsort($ data)
1:4
1:5
2:5
3:4
4:4
5:4
6:3
7:2
8:3
9:2
10:4
11:1
12:2
13:3
14:4
15:5
16:4
17:3
18:2
19:1
20:2
21:3
22:4
23:5
24:4
24:5
25:2
25:5
很满意。 但
1:4
1:5
24:4
24:5
25:2
25:5
具有重复值
我的问题是
1:4
1:5
24:4
24:5
25:2
25:5
至
1:4,5
2:5
3:4
.
.
24:4,5
25:2,5
如何在php上处理?
这可能有帮助-
$new= [];
foreach($ar as $v) {
$temp = explode(':', $v);
$new[$temp[0]][] = $temp[1];
}
foreach($new as $k => $v) {
$new[$k] = $k . ':' . implode(',', $v);
}
$keys = array();
$list = array(
'1:4','1:5','2:1','3:4','4:1','4:2'
);
// Seach the keys
foreach($list as $item){
$key = substr($item,0,strpos($item, ':'));
$val = substr($item,strpos($item, ':')+1);
if(!isset($keys[$key])) $keys[$key] = array();
$keys[$key][] = $val;
}
//And now you can handle how do you want
$final = array();
foreach($keys as $key => $value){
$final[$key] = implode(',',$value);
}
var_dump($list);
var_dump($keys);
var_dump($final);
=====================输出=====================
$list:
array (size=6)
0 => string '1:4' (length=3)
1 => string '1:5' (length=3)
2 => string '2:1' (length=3)
3 => string '3:4' (length=3)
4 => string '4:1' (length=3)
5 => string '4:2' (length=3)
$keys:
array (size=4)
1 =>
array (size=2)
0 => string '4' (length=1)
1 => string '5' (length=1)
2 =>
array (size=1)
0 => string '1' (length=1)
3 =>
array (size=1)
0 => string '4' (length=1)
4 =>
array (size=2)
0 => string '1' (length=1)
1 => string '2' (length=1)
$final:
array (size=4)
1 => string '4,5' (length=3)
2 => string '1' (length=1)
3 => string '4' (length=1)
4 => string '1,2' (length=3)
您可以分两步实现。
逆向工程以取得成果
$a=array('1:4' ,'1:5' ,'24:4','24:5','25:2','25:5');//input here $temp=array(); $result=array(); foreach($a as $v) { $part=explode(":",$v); if(isset($temp[$part[0]])) $temp[$part[0]].=",".$part[1]; else $temp[$part[0]]=$part[1]; } foreach($temp as $k=>$v) { $result[]=$k.":".$v; } print_r($result);
OUPTUT
Array ( [0] => 1:4,5 [1] => 24:4,5 [2] => 25:2,5 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.