我使用的是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上处理?
答案 0 :(得分:3)
这可能会有所帮助 -
$new= [];
foreach($ar as $v) {
$temp = explode(':', $v);
$new[$temp[0]][] = $temp[1];
}
foreach($new as $k => $v) {
$new[$k] = $k . ':' . implode(',', $v);
}
答案 1 :(得分:0)
$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);
===================== OUTPUT =====================
$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)
答案 2 :(得分:0)
你可以分两步实现它。
实现结果的逆向工程
$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 )