だから..私は、phpページに渡されたjqueryからserializeArray()によって生成されたこの配列を持っています..、
これは、PHP の $data に保存した出力配列です。
Array
(
[0] => Array
(
[name] => name
[value] => sample text
)
[1] => Array
(
[name] => bdate
[value] => sample date
)
[2] => Array
(
[name] => addr
[value] => sample addr
)
[3] => Array
(
[name] => demo_des
[value] => A
)
[4] => Array
(
[name] => demo_des
[value] => B
)
[5] => Array
(
[name] => demo_des
[value] => C
)
)
そして、これは id が行うことです:
for($i=0;$i<count($data);$i++){ //loop in $data
if($data[$i][name]==$data[$i+1][name]||$data[$i][name]==$data[$i-1][name]){
$impldval[] .= $data[$i][value];
$impldkey[] .= $data[$i][name];
}else{
$arr[$data[$i][name]] .= $data[$i][value];
}
}
基本的に、データをループして、data[num][name] が次または前と等しいかどうかを確認し、そうであれば配列に格納し、そうでない場合は別の配列に格納します。
次に、次のように重複した値を内破します。
if(is_array($impldkey)&is_array($impldval)){$arr[$impldkey[0]] .= implode(',',$impldval);}
$arr を出力すると、次のようになります。
Array
(
[name] => sample text
[bdate] => sample date
[addr] => sample addr
[demo_des] => A,B,C
)
これは正しいですが、問題は、同じ名前の配列が順序どおりでない場合、チェックするインクリメントが機能しないことです。
Array
(
[0] => Array
(
[name] => name
[value] => sample text
)
[1] => Array
(
[name] => demo_des
[value] => A
)
[2] => Array
(
[name] => addr
[value] => sample addr
)
[3] => Array
(
[name] => demo_des
[value] => B
)
[4] => Array
(
[name] => bdate
[value] => sample date
)
[5] => Array
(
[name] => demo_des
[value] => C
)
)
内破も機能しないため、これは次のようになります。
Array
(
[name] => sample text
[bdate] => sample date
[addr] => sample addr
[demo_des] => ABC
)
これが以前に尋ねられた場合は申し訳ありませんが、検索すると、マージする2つ以上の配列だけが求められます..
助言がありますか?または、これを回避する他の作業...
編集:これが私がする必要があることです。多次元配列を serializeArray() から単一の配列に変換し、重複した名前を結合して値を内破する必要があります。上記の例のように、配列をループして追加します「$arr」に追加しますが、重複している場合は別の配列に保存してから内破して「$arr」に追加します。