国内某一线服装品牌运输单信息接口数据组装(PHP数组处理记录)

客户的旧版运输单信息接口不能满足运营渐渐出现的问题,因此对该接口进行版本改造,获得的新结构是

而且为解决运营与第三方快递公司对excel导入的快递单订单商品等规格等问题,最后将格式重组的工作交给后台技术处理,因此尝试了不同的方式,最终决定加入数据库操作。以下兼贴上成功与尝试的方式代码。每行也同样有解析

附上运营用excel格式及最后的json实现结果



    function foxTest(){
        if ($_FILES["execl"]["error"] > 0)
        {
            echo "Error: " . $_FILES["execl"]["error"] . "<br />";
        }
        else
        {
            if (file_exists("upload/" . $_FILES["execl"]["name"]))
        {
            echo $_FILES["execl"]["name"] . " already exists. ";
        }
            else
        {
            move_uploaded_file($_FILES["execl"]["tmp_name"],
            "./uploads/source/" . $_FILES["execl"]["name"]);
            $file="./uploads/source/" . $_FILES["execl"]["name"];
            include_once('reader.php');
            $data = new Spreadsheet_Excel_Reader(); // 实例化解析类Spreadsheet_Excel_Reader
            $data->setOutputEncoding("utf-8");     // 设置编码方式
            $data->read($file);
            error_reporting(E_ALL ^ E_NOTICE);
            $one = array();
            for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
                $expressCompanyName=$data->sheets[0]['cells'][$i][1];//expressCompanyName
                $expressCompanyNo=$data->sheets[0]['cells'][$i][2];//expressCompanyNo
                $expressNo=$data->sheets[0]['cells'][$i][3];//expressNo
                $orderId=$data->sheets[0]['cells'][$i][4];//orderId
                $productIds=$data->sheets[0]['cells'][$i][5];//productIds
                $two = array('expressCompanyName' =>$expressCompanyName ,'expressCompanyNo' =>$expressCompanyNo ,'expressNo' =>$expressNo ,'orderId' =>$orderId , 'productIds'=>$productIds);
                $one[]=$two;//将信息组成数组后交到大数组中
            }
            //print_r($one);
            foreach ($one as  $value) {
                $productIds=$value['productIds'];//取出商品id
                $expressNo=$value['expressNo'];//取出快递单号
                $expressNo_arr[$expressNo][] = $productIds;//组成以快递单号为key,商品id为value的二维数组
                //$giftExpriessInfos = array('expressCompanyName' => $value['expressCompanyName'],'expressCompanyNo' => $value['expressCompanyNo'],'expressNo' => $value['expressNo'],'productIds' => $value['productIds']);
            }
			/*
            foreach ($one as  $value) {
                $ids_arr= explode("、", $value['productIds']);
                $providerCode="www.xxxxxxxx";
                $deliverStatus=true;
                $deliverFailMsg=null;
                  $expressNo=$value['expressNo'];
                $fox=$expressNo_arr[$expressNo];
       
                $giftExpriessInfos = array('expressCompanyName' => $value['expressCompanyName'],'expressCompanyNo' => $value['expressCompanyNo'],'expressNo' => $value['expressNo'],'deliverStatus' => $deliverStatus,'deliverFailMsg' => $deliverFailMsg,'productIds' => $fox);
                   $kdorder=$arrayName = array('orderId' =>$value['orderId'] ,'providerCode'=>$providerCode,'giftExpriessInfos'=>[$giftExpriessInfos] );
                   echo json_encode($kdorder);
                //$data=$value;
                //$info = $this->order_model->add_kdorder($data);
                //echo $info;
            }
			*/
                $xxx = array();//开个数组
            foreach ($one as  $value) {
                $ids_arr= explode("、", $value['productIds']);//将字符串打散为数组,excel的规格是、来区分
                $providerCode="www.xxxxxxxx";
                $deliverStatus=true;
                $deliverFailMsg=null;
                $giftExpriessInfos = array('expressCompanyName' => $value['expressCompanyName'],'expressCompanyNo' => $value['expressCompanyNo'],'expressNo' => $value['expressNo'],'deliverStatus' => $deliverStatus,'deliverFailMsg' => $deliverFailMsg,'productIds' => $ids_arr);//productIds这个字段客户需要的是数组类型
                $kdorder = array('orderId' =>$value['orderId'] ,'providerCode'=>$providerCode,'giftExpriessInfos'=>[$giftExpriessInfos] );//客户需求的格式
                $xxx[]=$kdorder;//加入去大数组带出去
            }
                $keys = array_keys($xxx); //key数组化
                $keys =max($keys);//拿key的最后一位
                for ($i=0; $i <=$keys ; $i++) { //把key拿出来打数组
                     $orderId=$xxx[$i]['orderId'];//取出订单号
                     $sc[]= $orderId;//将订单号放进数组中
                 }
                 //print_r($sc);
                  $axc=array_count_values($sc);//统计出现次数
                  foreach ($axc as $key => $value) {
                    if ($value > 1) {//拿key,就是订单号在excel中是否出现多次,是出现多次就重新组成一个拿去发送
                        $where = array('orderId' =>$key);//条件:订单号
                        $providerCode="www.xxxxxxxx";
						$deliverStatus=true;
						$deliverFailMsg=null;
						$info = $this->order_model->diaohai_order($where);//数据库操作找出expressCompanyName, expressCompanyNo, expressNo,productIds在重复订单号中是什么内容
						//$ids_arr= explode("、", $info['productIds']);
						$keysd = array_keys($info); //key数组化
						$keysd =max($keysd);//拿key的最后一位
                        for ($i=0; $i <=$keysd ; $i++) { //通过循环来组装最终的结果
	                        //echo $info[$i]['productIds'];
	                        $ids_arr= explode("、", $info[$i]['productIds']);
	                        $info[$i]['productIds']=$ids_arr;
	                        $info[$i]['deliverStatus']=$deliverStatus;
	                        $info[$i]['deliverFailMsg']=$deliverFailMsg;
                        }
						$weqwe = array('orderId' =>$key ,'providerCode'=>$providerCode,'giftExpriessInfos'=>$info );//最终结果
						//$info=array_merge_recursive($info[0],$info[1]);
						//echo json_encode($info);  
						//print_r($weqwe);
						$weqwe=json_encode($weqwe,JSON_UNESCAPED_UNICODE);//打成json格式,记得JSON_UNESCAPED_UNICODE来处理中文
						//echo $weqwe;
						$url = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
						//$url = "xxxxxxxxxxxxx";
						$curl = curl_init();
						curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=utf-8"));
						curl_setopt($curl, CURLOPT_URL, $url);
						//$data =  array('name' =>"lijunsheng");
						//$data=json_encode($data);
						//$data_one=array('newlyIncrease'=>$newlyIncrease);
						//print_r($data_one);
						curl_setopt($curl, CURLOPT_POSTFIELDS, $weqwe);
						//curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
						curl_setopt($curl, CURLOPT_HEADER, 0);
						curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
						$ret = curl_exec($curl);
						echo $ret;  // 返回的数据在这里
						curl_close($curl);
                    }else{//订单号没出现多次的情况
						$deliverStatus=true;
						$deliverFailMsg=null;
						$where = array('orderId' =>$key);
						$info = $this->order_model->diaohai_order($where);
						$info[0]['deliverStatus']=$deliverStatus;
						$info[0]['deliverFailMsg']=$deliverFailMsg;
						$ids_arr= explode("、", $info[0]['productIds']);
						$info[0]['productIds']=$ids_arr;
						$weqwe = array('orderId' =>$key ,'providerCode'=>$providerCode,'giftExpriessInfos'=>$info );
						//$info=array_merge_recursive($info[0],$info[1]);
						//echo json_encode($info);  
						//print_r($weqwe);
						$weqwe=json_encode($weqwe,JSON_UNESCAPED_UNICODE); 
						echo $weqwe;
						$url = "http://xxxxxxxxxxxxxxxxxxxx";
						//$url = "xxxxxxxxxxxxxxxxxxxxxx";
						$curl = curl_init();
						curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=utf-8"));
						curl_setopt($curl, CURLOPT_URL, $url);
						//$data =  array('name' =>"lijunsheng");
						//$data=json_encode($data);
						//$data_one=array('newlyIncrease'=>$newlyIncrease);
						//print_r($data_one);
						curl_setopt($curl, CURLOPT_POSTFIELDS, $weqwe);
						//curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
						curl_setopt($curl, CURLOPT_HEADER, 0);
						curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
						$ret = curl_exec($curl);
						echo $ret;  // 返回的数据在这里
						curl_close($curl);
                    } 
                  }
				//print_r($xxx);
				// $sss=array_merge_recursive($xxx[0],$xxx[1]);
				//echo json_encode($sss);           
				/*
				foreach ($one as  $value) {
				$ids_arr= explode("、", $value['productIds']);
				$providerCode="www.xxxxxxxxxx";
				$deliverStatus=true;
				$deliverFailMsg=null;
				$giftExpriessInfos = array('expressCompanyName' => $value['expressCompanyName'],'expressCompanyNo' => $value['expressCompanyNo'],'expressNo' => $value['expressNo'],'deliverStatus' => $deliverStatus,'deliverFailMsg' => $deliverFailMsg,'productIds' => $ids_arr);
				$kdorder=$arrayName = array('orderId' =>$value['orderId'] ,'providerCode'=>$providerCode,'giftExpriessInfos'=>[$giftExpriessInfos] );
				echo json_encode($kdorder);
				//$data=$value;
				//$info = $this->order_model->add_kdorder($data);
				//echo $info;
            }
           */
            /*
            $last = array();
            foreach ($two as $key => $value) {
                echo $expressCompanyName;
                $orderId=$key;
                $providerCode="www.xxxxxx";
                 $giftExpriessInfos= array();
                   foreach ($value as $key => $value) {
                    $deliverStatus=true;
                    $deliverFailMsg=null;
                        $ids_arr= explode("、", $value);
                        $smallText = array('expressNo' =>$key,'productIds'=>$ids_arr,'deliverStatus'=>$deliverStatus,'deliverFailMsg'=>$deliverFailMsg);
                        $giftExpriessInfos[]=$smallText;
                        $last=array(
                        "orderId"=>$orderId,
                        "giftExpriessInfos"=>$giftExpriessInfos
                        );
                             echo json_encode($last);
                   }
            }
            //print_r($last);
         */
			//print_r($item);
            //print_r(array_unique($last));
            //echo json_encode($last);
            //$giftExpriessInfos= array();
            /*
            foreach ($two as $key => $value) {
                $ids=implode("",$value);
                $ids_arr= explode("、", $ids);
                $smallText = array('expressCompanyNo' => $key,'productIds' => $ids_arr);
                $giftExpriessInfos[]=$smallText;
            }
            print_r($giftExpriessInfos);
            //echo json_encode($giftExpriessInfos);
            */
        	}
    	}
    }
可能还有更好的方式,可日后在空闲的时间再进行抽象化的操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值