主要用来复制多个商品,记录备用
/**
* 处理复制商品数组 function
* $filter __DEL__ 删除
* $filter __TMP__[复制]field 模板可替换字段 field将替换为同名数字库字段内容
* @param [arrray] $src 源数组
* @param [array] $filter 要过滤的数据
* @param [string] $src_ids 返回需要的主键ID
* @return void
*/
function _parse_replace($src, $filter, $src_ids = null)
{
$temp = $ids = [];
foreach ($src as $k => $v) {
$src_ids !== null && $ids[$k] = $v[$src_ids];
foreach ($v as $k1 => $v1) {
if (in_array($k1, array_keys($filter))) {
if ($filter[$k1] === '__DEL__') {
continue;
}
if (is_string($filter[$k1]) && strstr($filter[$k1], '__TMP__')) {
$_str = str_replace(array_keys($v), $v, $filter[$k1]);
$_str = ltrim($_str, '__TMP__');
$temp[$k][$k1] = $_str;
continue;
}
$temp[$k][$k1] = is_array($filter[$k1]) ? $filter[$k1][$k] : $filter[$k1];
} else {
$temp[$k][$k1] = $v1;
}
}
}
return ['dst' => $temp, 'ids' => $ids];
}
//过滤参数示例
$src_filter = [
'goods_id' => '__DEL__' //商品ID
, 'shop_id' => $shop_id //店铺ID
, 'name' => '__TMP__[复制]name'
, 'status' => 2 //默认不上架
, 'create_time' => time()
];
//过滤参数为1对N时的关联ID补齐
//$dst['ids']替换后的返回数组
//$goods_spec为与IDS相对应的N条记录
//goods_id为表关联ID
foreach($goods_spec as $k => $v){
$_k = array_search($v['goods_id'],$dst['ids']);
if(false !== $_k){
array_push($ids,$_good_ids[$_k]);
}
}