php 以数组为参数 获取对应的数组
2024-11-25 10:47:25
function cart_by_favourable_project_list($merchant_goods)
{
$id_list = array();
$list_array = array(); //根据购物车中的商品数据获取所有商品的顶级cat_id与顶级catname
foreach ($merchant_goods as $key => $row) {
$user_cart_goods = isset($row['goods_list']) && !empty($row['goods_list']) ? $row['goods_list'] : array();
//1.取出第三级分类的id foreach($user_cart_goods as $key1 => $row1){
$user_cart_goods_cat_id_3[] = $row1['cat_id'];
}
//2.取出第二级分类的id $user_cart_goods_cat_id_3_str = join(',', $user_cart_goods_cat_id_3);
$user_cart_goods_cat_id_2_sql = "select cat_id,parent_id from dsc_category where cat_id in ($user_cart_goods_cat_id_3_str)";
$res_user_cart_goods_cat_id_2 = $GLOBALS['db']->query($user_cart_goods_cat_id_2_sql);
while($row_user_cart_goods_cat_id_2 = $GLOBALS['db']->fetchRow($res_user_cart_goods_cat_id_2)){
//商品分类cate_id的parent_id
$user_cart_goods_cat_id_2[$row_user_cart_goods_cat_id_2['cat_id']]=$row_user_cart_goods_cat_id_2['parent_id'];
}
$user_cart_goods_cat_id_2 = array_map(function($id) use ($user_cart_goods_cat_id_2){
return $user_cart_goods_cat_id_2[$id];
},$user_cart_goods_cat_id_3);
//3.取出顶级分类的id $user_cart_goods_cat_id_2_str = join(',',$user_cart_goods_cat_id_2);
$user_cart_goods_cat_id_1_sql = "select cat_id,parent_id from dsc_category where cat_id in ($user_cart_goods_cat_id_2_str)";
$res_user_cart_goods_cat_id_1 = $GLOBALS['db']->query($user_cart_goods_cat_id_1_sql);
while($row_user_cart_goods_cat_id_1 = $GLOBALS['db']->fetchRow($res_user_cart_goods_cat_id_1)){
//商品分类cate_id的parent_id
$user_cart_goods_cat_id_1[$row_user_cart_goods_cat_id_1['cat_id']]=$row_user_cart_goods_cat_id_1['parent_id'];
}
$user_cart_goods_cat_id_1 = array_map(function($id) use ($user_cart_goods_cat_id_1){
return $user_cart_goods_cat_id_1[$id];
},$user_cart_goods_cat_id_2);
//4.取出顶级分类的cat_name $final_cat_name_sql="select cat_id,cat_name from dsc_category where cat_id in (" . join(",",$user_cart_goods_cat_id_1) . ")";
$res_final_cat_name_array = $GLOBALS['db']->query($final_cat_name_sql);
while($row_final_cat_name_array = $GLOBALS['db']->fetchRow($res_final_cat_name_array)){
//商品分类cate_id的parent_id
$row_final_cat_name_array_1[$row_final_cat_name_array['cat_id']] = $row_final_cat_name_array['cat_name'];
}
$row_final_cat_name_array_1 = array_map(function($id) use ($row_final_cat_name_array_1) {
return $row_final_cat_name_array_1[$id];
}, $user_cart_goods_cat_id_1);
//5.$row_final_cat_name_array_1数组就是顶级cat_name
$favourable_list = favourable_list($_SESSION['user_rank'], $row['ru_id']);
$sort_favourable = sort_favourable($favourable_list);
$index = 0 ;
while(count($row_final_cat_name_array_1)-$index){
$user_cart_goods[$index]['cat_name']=$row_final_cat_name_array_1[$index];
$index++;
}
$index1 = 0 ;
while(count($user_cart_goods_cat_id_1)-$index1){
$user_cart_goods[$index1]['top_id']=$user_cart_goods_cat_id_1[$index1];
$index1++;
}
if ($user_cart_goods) {
foreach ($user_cart_goods as $key1 => $row1) {
$row1['original_price'] = $row1['goods_price'] * $row1['goods_number'];
if (isset($sort_favourable['by_all']) && $row1['extension_code'] != 'package_buy' && substr($row1['extension_code'], 0, 7) != 'seckill') {
foreach ($sort_favourable['by_all'] as $key2 => $row2) {
$mer_ids = true;
if ($GLOBALS['_CFG']['region_store_enabled']) {
$mer_ids = get_favourable_merchants($row2['userFav_type'], $row2['userFav_type_ext'], $row2['rs_id'], 1, $row1['ru_id']);
}
if ($row2['userFav_type'] == 1 || $mer_ids) {
if ($row1['is_gift'] == 0) {
if (isset($row1) && $row1) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_id'] = $row2['act_id'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_name'] = $row2['act_name'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type'] = $row2['act_type'];
switch ($row2['act_type']) {
case 0:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['With_a_gift'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = intval($row2['act_type_ext']);
break;
case 1:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['Full_reduction'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = number_format($row2['act_type_ext'], 2);
break;
case 2:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['discount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = floatval($row2['act_type_ext'] / 10);
break;
default:
break;
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['min_amount'] = $row2['min_amount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext'] = intval($row2['act_type_ext']);
@$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_fav_amount'] += $row1['subtotal'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['available'] = favourable_available($row2, array(), $row1['ru_id']);
$cart_favourable = cart_favourable($row1['ru_id']);
$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_favourable_gift_num'] = empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]);
$merchant_goods[$key]['new_list'][$row2['act_id']]['favourable_used'] = favourable_used($row2, $cart_favourable);
$merchant_goods[$key]['new_list'][$row2['act_id']]['left_gift_num'] = intval($row2['act_type_ext']) - (empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]));
if ($row2['gift']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_gift_list'] = $row2['gift'];
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list'][$row1['rec_id']] = $row1;
unset($row1);
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list']);
}
}
}
else {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_cart_gift'][$row1['rec_id']] = $row1;
}
}
else if ($GLOBALS['_CFG']['region_store_enabled']) {
$merchant_goods[$key]['new_list'][0]['act_goods_list'][$row1['rec_id']] = $row1;
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][0]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][0]['act_goods_list']);
}
}
break;
}
continue;
}
if (isset($sort_favourable['by_category']) && $row1['extension_code'] != 'package_buy' && substr($row1['extension_code'], 0, 7) != 'seckill') {
$get_act_range_ext = get_act_range_ext($_SESSION['user_rank'], $row['ru_id'], 1);
$str_cat = '';
foreach ($get_act_range_ext as $id) {
$cat_keys = get_array_keys_cat(intval($id));
if ($cat_keys) {
$str_cat .= implode(',', $cat_keys);
}
}
if ($str_cat) {
$list_array = explode(',', $str_cat);
}
$list_array = !empty($list_array) ? array_merge($get_act_range_ext, $list_array) : $get_act_range_ext;
$id_list = arr_foreach($list_array);
$id_list = array_unique($id_list);
$cat_id = $row1['cat_id'];
$favourable_id_list = get_favourable_id($sort_favourable['by_category']);
if (in_array($cat_id, $id_list) && $row1['is_gift'] == 0 || in_array($row1['is_gift'], $favourable_id_list)) {
foreach ($sort_favourable['by_category'] as $key2 => $row2) {
if (isset($row1) && $row1) {
$fav_act_range_ext = !empty($row2['act_range_ext']) ? explode(',', $row2['act_range_ext']) : array();
foreach ($fav_act_range_ext as $id) {
$cat_keys = get_array_keys_cat(intval($id));
$fav_act_range_ext = array_merge($fav_act_range_ext, $cat_keys);
}
if ($row1['is_gift'] == 0 && in_array($cat_id, $fav_act_range_ext)) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_id'] = $row2['act_id'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_name'] = $row2['act_name'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type'] = $row2['act_type'];
switch ($row2['act_type']) {
case 0:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['With_a_gift'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = intval($row2['act_type_ext']);
break;
case 1:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['Full_reduction'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = number_format($row2['act_type_ext'], 2);
break;
case 2:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['discount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = floatval($row2['act_type_ext'] / 10);
break;
default:
break;
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['min_amount'] = $row2['min_amount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext'] = intval($row2['act_type_ext']);
@$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_fav_amount'] += $row1['subtotal'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['available'] = favourable_available($row2, array(), $row1['ru_id']);
$cart_favourable = cart_favourable($row1['ru_id']);
$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_favourable_gift_num'] = empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]);
$merchant_goods[$key]['new_list'][$row2['act_id']]['favourable_used'] = favourable_used($row2, $cart_favourable);
$merchant_goods[$key]['new_list'][$row2['act_id']]['left_gift_num'] = intval($row2['act_type_ext']) - (empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]));
if ($row2['gift']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_gift_list'] = $row2['gift'];
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list'][$row1['rec_id']] = $row1;
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list']);
}
unset($row1);
}
if (isset($row1) && $row1 && $row1['is_gift'] == $row2['act_id']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_cart_gift'][$row1['rec_id']] = $row1;
}
}
}
continue;
}
}
if (isset($sort_favourable['by_brand']) && $row1['extension_code'] != 'package_buy' && substr($row1['extension_code'], 0, 7) != 'seckill') {
$get_act_range_ext = get_act_range_ext($_SESSION['user_rank'], $row['ru_id'], 2);
$brand_id = $row1['brand_id'];
$favourable_id_list = get_favourable_id($sort_favourable['by_brand']);
if (in_array(trim($brand_id), $get_act_range_ext) && $row1['is_gift'] == 0 || in_array($row1['is_gift'], $favourable_id_list)) {
foreach ($sort_favourable['by_brand'] as $key2 => $row2) {
$act_range_ext_str = ',' . $row2['act_range_ext'] . ',';
$brand_id_str = ',' . $brand_id . ',';
if (isset($row1) && $row1) {
if ($row1['is_gift'] == 0 && strstr($act_range_ext_str, trim($brand_id_str))) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_id'] = $row2['act_id'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_name'] = $row2['act_name'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type'] = $row2['act_type'];
switch ($row2['act_type']) {
case 0:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['With_a_gift'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = intval($row2['act_type_ext']);
break;
case 1:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['Full_reduction'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = number_format($row2['act_type_ext'], 2);
break;
case 2:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['discount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = floatval($row2['act_type_ext'] / 10);
break;
default:
break;
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['min_amount'] = $row2['min_amount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext'] = intval($row2['act_type_ext']);
@$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_fav_amount'] += $row1['subtotal'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['available'] = favourable_available($row2);
$cart_favourable = cart_favourable($row1['ru_id']);
$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_favourable_gift_num'] = empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]);
$merchant_goods[$key]['new_list'][$row2['act_id']]['favourable_used'] = favourable_used($row2, $cart_favourable);
$merchant_goods[$key]['new_list'][$row2['act_id']]['left_gift_num'] = intval($row2['act_type_ext']) - (empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]));
if ($row2['gift']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_gift_list'] = $row2['gift'];
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list'][$row1['rec_id']] = $row1;
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list']);
}
unset($row1);
}
if (isset($row1) && $row1 && $row1['is_gift'] == $row2['act_id']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_cart_gift'][$row1['rec_id']] = $row1;
}
}
}
continue;
}
}
if (isset($sort_favourable['by_goods']) && $row1['extension_code'] != 'package_buy' && substr($row1['extension_code'], 0, 7) != 'seckill') {
$get_act_range_ext = get_act_range_ext($_SESSION['user_rank'], $row['ru_id'], 3);
$favourable_id_list = get_favourable_id($sort_favourable['by_goods']);
if (in_array($row1['goods_id'], $get_act_range_ext) || in_array($row1['is_gift'], $favourable_id_list)) {
foreach ($sort_favourable['by_goods'] as $key2 => $row2) {
$act_range_ext_str = ',' . $row2['act_range_ext'] . ',';
$goods_id_str = ',' . $row1['goods_id'] . ',';
if (isset($row1) && $row1) {
if (strstr($act_range_ext_str, $goods_id_str) && $row1['is_gift'] == 0) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_id'] = $row2['act_id'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_name'] = $row2['act_name'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type'] = $row2['act_type'];
switch ($row2['act_type']) {
case 0:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['With_a_gift'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = intval($row2['act_type_ext']);
break;
case 1:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['Full_reduction'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = number_format($row2['act_type_ext'], 2);
break;
case 2:
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_txt'] = $GLOBALS['_LANG']['discount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext_format'] = floatval($row2['act_type_ext'] / 10);
break;
default:
break;
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['min_amount'] = $row2['min_amount'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_type_ext'] = intval($row2['act_type_ext']);
@$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_fav_amount'] += $row1['subtotal'];
$merchant_goods[$key]['new_list'][$row2['act_id']]['available'] = favourable_available($row2);
$cart_favourable = cart_favourable($row1['ru_id']);
$merchant_goods[$key]['new_list'][$row2['act_id']]['cart_favourable_gift_num'] = empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]);
$merchant_goods[$key]['new_list'][$row2['act_id']]['favourable_used'] = favourable_used($row2, $cart_favourable);
$merchant_goods[$key]['new_list'][$row2['act_id']]['left_gift_num'] = intval($row2['act_type_ext']) - (empty($cart_favourable[$row2['act_id']]) ? 0 : intval($cart_favourable[$row2['act_id']]));
if ($row2['gift']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_gift_list'] = $row2['gift'];
}
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list'][$row1['rec_id']] = $row1;
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][$row2['act_id']]['act_goods_list']);
}
break;
unset($row1);
}
if (isset($row1) && $row1 && $row1['is_gift'] == $row2['act_id']) {
$merchant_goods[$key]['new_list'][$row2['act_id']]['act_cart_gift'][$row1['rec_id']] = $row1;
}
}
}
}
else {
$merchant_goods[$key]['new_list'][0]['act_goods_list'][$row1['rec_id']] = $row1;
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][0]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][0]['act_goods_list']);
}
}
}
else {
$merchant_goods[$key]['new_list'][0]['act_goods_list'][$row1['rec_id']] = $row1;
if (defined('THEME_EXTENSION')) {
$merchant_goods[$key]['new_list'][0]['act_goods_list_num'] = count($merchant_goods[$key]['new_list'][0]['act_goods_list']);
}
}
}
}
}
// echo "<pre>";
// var_dump($merchant_goods);
// die;
$new_goods_list = $merchant_goods[0]['new_list'][0]['act_goods_list'];
rsort($new_goods_list);
$merchant_goods[0]['new_list'][0]['act_goods_list']=$new_goods_list;
// echo "<pre>";
// var_dump($merchant_goods[0]['new_list'][0]['act_goods_list']);
$new_goods_list2 = [];
foreach ($merchant_goods[0]['new_list'][0]['act_goods_list'] as $item) {
$new_goods_list2[$item['top_id']]['name'] = $item['cat_name'];
$new_goods_list2[$item['top_id']]['goods_list'][] = $item;
}
$merchant_goods[0]['new_list'][0]['act_goods_list'] = $new_goods_list2;
return $merchant_goods;
}
