【tp5】索引数组转成关联数组 ( $a=[],转换成 $a['aa'=>2,'bb'=>'3c'] )

概念:

索引数组 ==== 》》》$arr = [];

关联数组 ====》》》 $arr = [ 'orange'=>1,'apple'=>'good'  ];

 

1、在tp5之前的tp3.2,我们知道索引数组转关联数组,是直接可以转成功的,因为php是弱语言类型。

2、在tp5之后,索引数组不能直接转关联数组,必要通过isset进行判断,然后才能给转成关联数组。

     否则,tp5会报错:

未定义数组索引: aa

如何避免这个错误呢?

可以isset进行判断【‘aa’】下标是否存在,不存在,则进行赋值;存在则直接赋值。

demo:

if(!empty($erp_today_pay_arr)){
                        $a = [];    //用于存放支付方式和金额的一维数组,key是支付方式
                        foreach($erp_today_pay_arr as $v){
                            $one_p_t_arr = [];
                            $one_p_t_arr = explode('+', $v['Money_Paytype']);
                            foreach($erp_pay_type_arr as $v2){
                                foreach($one_p_t_arr as $v3){
                                    $c='';
                                    $c=substr($v3,0,strrpos($v3,'('));  //淘宝支付宝、支付宝、微信支付等
                                    if( $c == $v2 ){
                                        $b='';
                                        $b=substr(trim($v3,')'),strrpos(trim($v3,')'),'(')+1);
                                        if(!isset($a[$v2])){
                                            $a[$v2] = '';
                                            $a[$v2]+=$b;
                                            $a[$v2] = number_format($a[$v2],2,'.','');
                                        }else{
                                            $a[$v2]+=$b;
                                            $a[$v2] = number_format($a[$v2],2,'.','');
                                        }
                                    }
                                }
                            }
                        }
                    }

 

上面$a 刚开始我们定义成索引数组a,然后通过isset进行转换成 关联数组,里面包含了很多的下标【$v2】。

如果不使用isset,直接进行$a[$v2],会报错:【未定义数组索引: aa】

 

posted @ 2018-08-17 12:45  PHP急先锋  阅读(3507)  评论(0编辑  收藏  举报