69 字
1 分钟
php二维数组数据指定键唯一合并
例子:
array:11 [ 0 => array:2 [ "publicadtype" => "h5-zmiti" "num" => 16 ] 1 => array:2 [ "publicadtype" => "图片-zmiti" "num" => 88 ] 2 => array:2 [ "publicadtype" => "视频-zmiti" "num" => 13 ] 3 => array:2 [ "publicadtype" => "音频-zmiti" "num" => 30 ] 4 => array:2 [ "publicadtype" => "视频-zmiti" "notaudit" => 4 ] 5 => array:2 [ "publicadtype" => "h5-zmiti" "trial" => 16 ] 6 => array:2 [ "publicadtype" => "图片-zmiti" "trial" => 88 ] 7 => array:2 [ "publicadtype" => "视频-zmiti" "trial" => 8 ] 8 => array:2 [ "publicadtype" => "音频-zmiti" "trial" => 27 ] 9 => array:2 [ "publicadtype" => "视频-zmiti" "initialfailure" => 1 ] 10 => array:2 [ "publicadtype" => "音频-zmiti" "thefinal" => 3 ]]将此数组变为:
array:4 [ 0 => array:3 [ "publicadtype" => "h5-zmiti" "num" => 16 "trial" => 16 ] 1 => array:3 [ "publicadtype" => "图片-zmiti" "num" => 88 "trial" => 88 ] 2 => array:5 [ "publicadtype" => "视频-zmiti" "num" => 13 "notaudit" => 4 "trial" => 8 "initialfailure" => 1 ] 3 => & array:4 [ "publicadtype" => "音频-zmiti" "num" => 30 "trial" => 27 "thefinal" => 3 ]]可用代码:
$json = '[{"publicadtype":"h5-zmiti","num":16},{"publicadtype":"\u56fe\u7247-zmiti","num":88},{"publicadtype":"\u89c6\u9891-zmiti","num":13},{"publicadtype":"\u97f3\u9891-zmiti","num":30},{"publicadtype":"\u89c6\u9891-zmiti","notaudit":4},{"publicadtype":"h5-zmiti","trial":16},{"publicadtype":"\u56fe\u7247-zmiti","trial":88},{"publicadtype":"\u89c6\u9891-zmiti","trial":8},{"publicadtype":"\u97f3\u9891-zmiti","trial":27},{"publicadtype":"\u89c6\u9891-zmiti","initialfailure":1},{"publicadtype":"\u97f3\u9891-zmiti","thefinal":3}]';$data = json_decode($json, true);
foreach ($data as $nk => &$nv) { foreach ($data as $nnk => $nnv) { if ($nk !== $nnk) { if (in_array($nv['publicadtype'], $nnv)) { $nv = array_merge($nv, $nnv); if ($nnk !== $nk) { unset($data[$nnk]); } } } }}ps:此代码有一个重复赋值找出修改方法吧
数组复杂处理常见的引用符号,加上后有些重复处理和赋值会直接操作原有数组.
部分信息可能已经过时