laravel使用PHP array_combine(),array_column(),unset(),array_values()函数示例

1.PHP array_combine() 函数,通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值

实例
通过合并两个数组来创建一个新数组,其中的一个数组元素为键名,另一个数组元素为键值:

<?php
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");

$c=array_combine($fname,$age);
print_r($c);
?>

结果
Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )

2.PHP array_column() 函数 ,返回输入数组中某个单一列的值。

实例
从记录集中取出 last_name 列:

<?php
// 可能从数据库中返回数组
$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Peter',
    'last_name' => 'Griffin',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Ben',
    'last_name' => 'Smith',
  ),
  array(
    'id' => 3809,
    'first_name' => 'Joe',
    'last_name' => 'Doe',
  )
);

$last_names = array_column($a, 'last_name');
print_r($last_names);
?>
输出:

Array
(
  [0] => Griffin
  [1] => Smith
  [2] => Doe
)

3.array_values() 函数返回包含数组中所有的值的数组。

提示:被返回的数组将使用数值键,从 0 开始且以 1 递增。

实例
返回数组中所有的值(不保留键名):

<?php
$a=array("Name"=>"Peter","Age"=>"41","Country"=>"USA");
print_r(array_values($a));
?>

结果
Array ( [0] => Peter [1] => 41 [2] => USA )

4.unset() 函数用于销毁给定的变量。

<?php
// 销毁单个变量
unset ($foo);
 
// 销毁单个数组元素
unset ($bar['quux']);
 
// 销毁一个以上的变量
unset($foo1, $foo2, $foo3);
?>
如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。

实例
<?php
function destroy_foo() {
    global $foo;
    unset($foo);
}
 
$foo = 'bar';
destroy_foo();
echo $foo;
?>
输出结果为:

bar

5.laravel示例,几个函数组合使用 

 /**
     * 处理商品列表(抢购、限时折扣、商品图片)
     */
    private function _goods_list_extend($goods_list)
    {
        //获取商品列表编号数组
        $goodsid_array = array();
        foreach ($goods_list as $key => $value) {
            $goodsid_array[] = $value['goods_id'];
        }

        $sole_array = Model('p_sole')->getSoleGoodsList(array('goods_id' => array('in', $goodsid_array)));
        $sole_array = array_under_reset($sole_array, 'goods_id');

        $goods_list = dispatchNow(new \App\Jobs\Goods\CollectionGetPriceData($goods_list, MemberStore::getMember()));
        $goods_list = dispatchNow(new \App\Jobs\Goods\GoodsFictitiousSale($goods_list));

        
        $storeArr = \App\Models\Store::whereIn('store_id', array_unique(array_column($goods_list, 'store_id')))
            ->select(['store_id', 'store_name', 'is_show_auto_vr_order', 'is_auto_vr_order','gift_amount','is_show_b2c'])
            ->get()
            ->toArray();
        //组合
        $storeArr = array_combine(array_column($storeArr, 'store_id'), $storeArr);

        foreach ($goods_list as $key => $value) {
            //格式化商品销量
//            if($value['goods_salenum']){
//                $goods_list[$key]['goods_salenum'] = format_goods_salenum($value['goods_salenum']);
//            }

            //店铺is_show_b2c关闭 不显示该店铺的商品
            if ($storeArr[$value['store_id']]['is_show_b2c'] == 0) {
                //销毁
                unset($goods_list[$key]);
            } else {
                $goods_list[$key]['sole_flag'] = false;
                $goods_list[$key]['group_flag'] = false;
                $goods_list[$key]['xianshi_flag'] = false;
                if (!empty($sole_array[$value['goods_id']])) {
                    $goods_list[$key]['goods_price'] = $sole_array[$value['goods_id']]['sole_price'];
                    $goods_list[$key]['sole_flag'] = true;
                } else {
                    $goods_list[$key]['goods_price'] = $value['goods_promotion_price'];
                    switch ($value['goods_promotion_type']) {
                        case 1:
                            $goods_list[$key]['group_flag'] = true;
                            break;
                        case 2:
                            $goods_list[$key]['xianshi_flag'] = true;
                            break;
                    }

                }

                //商品图片url
                $goods_list[$key]['goods_image_url'] = cthumb($value['goods_image'], 360, $value['store_id']);
                $goods_list[$key]['goods_price'] = $value['sold_price'];

                if (isset($storeArr[$value['store_id']])) {
                    $storeInfo = $storeArr[$value['store_id']];
                    $goods_list[$key]['is_show_extend_info'] = !($value['is_virtual'] && $storeInfo['is_show_auto_vr_order'] && $storeInfo['is_auto_vr_order']);
                    $goods_list[$key]['gift_amount']=$storeInfo['gift_amount'];         //金豆赠送比例

                } else {
                    $goods_list[$key]['is_show_extend_info'] = true;
                }

                $goods_list[$key]['store_name'] = $storeArr[$value['store_id']]['store_name'] ?? $value['store_name'];

                unset($goods_list[$key]['goods_promotion_type']);
                unset($goods_list[$key]['goods_promotion_price']);
                unset($goods_list[$key]['goods_commonid']);
                unset($goods_list[$key]['nc_distinct']);
            }
        }
        //重新生成
        $goods_list= array_values($goods_list);
        return $goods_list;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值