ecos商城 输出不同状态的数据 && 要去除,为空的数组 函数 array_filter()
问题:状态如下
全部,已收,代付款,完成
SELECT * FROM tfmall.tfm_subsales_commisions;
点击状态,出现不同状态的数据,首先考虑开始考虑<a herf="#idxx">已发货</a>
这样要写重复写几个状态、
第二考虑,function 带变量,因为每个状态的变量可以设定所以,根据变量状态去查找对的数据,
例子:

public function index($status = 'pay_status0') { $this->title = '我的订单'; $filter = array('member_id' => $this->member_id()); if ($status == 'pay_status0') { $order_status['status'] = 0;//待付款 } if ($status == 'pay_status1') { $order_status['status'] = 1;//可结算 $filter['pay_status'] = $order_status['status'];//已付款 } if ($status == 'ship_status1') { $order_status['status'] = 1; $filter['ship_status'] = $order_status['status'];//已发货 $filter['pay_status'] = $order_status['status'];//已付款 } if ($status == 'statusfinish') { $order_status['status'] = -1; $filter['status'] = 'finish';//已完成 } if ($status == 'statusdead') { $filter['status'] = 'dead';//已关闭 } $orders_id = $this->commisions_mdl->getlist('order_id,goods_id',$order_status); foreach($orders_id as $key3=>$val3){ $filter['order_id'] = $val3['order_id']; $order[$key3] = $this->orders_mdl->dump($filter); } $order_arr = array(); foreach ($order as $key => $val) { if (empty($val)) { continue; } $order_arr[] = $val; } $members = $this->members_mdl->getList('mobile,name',array('member_id'=> $this->member_id())); foreach($order_arr as $key=>$val){ $oders_info[$key] = $this->orders_mdl->dump(array('order_id'=>$val['order_id'])); $oders_info_img= $this->commisions_mdl->dump(array('order_id'=>$val['order_id'])); $oders_info[$key]['img'] = $this->images($oders_info_img['goods_id']); $oders_info[$key]['mobile'] = $members[0]['mobile']; $oders_info[$key]['name'] = $members[0]['name']; } $this->pagedata['order']=$oders_info; $this->pagedata['status'] = $status; $this->page('wap/order/index.html'); }
前端代码:

<h2 class="am-text-center am-text-xl am-margin-top-sm">我的订单</h2> <ul class="am-avg-sm-5 am-text-center am-text-lg"> <li class="am-active"> <a class="<{if $status =='pay_status0'}>am-text-danger<{/if}>" href="<{link app=subsales ctl=wap_suborder act=index arg0='pay_status0'}>">待付款</a></li> <li><a class="<{if $status =='pay_status1'}>am-text-danger<{/if}>" href="<{link app=subsales ctl=wap_suborder act=index arg0='pay_status1'}>">已付款</a></li> <li><a class="<{if $status =='ship_status1'}>am-text-danger<{/if}>" href="<{link app=subsales ctl=wap_suborder act=index arg0='ship_status1'}>">已发货</a></li> <li><a class="<{if $status =='statusfinish'}>am-text-danger<{/if}>" href="<{link app=subsales ctl=wap_suborder act=index arg0='statusfinish'}>">已完成</a></li> <li><a class="<{if $status =='statusdead'}>am-text-danger<{/if}>" href="<{link app=subsales ctl=wap_suborder act=index arg0='statusdead'}>">已关闭</a></li> </ul> <div class="am-tabs-bd"> <!-- 待付款 --> <div class="am-tab-panel am-fade am-in am-active" id="goods"> <{if $order}> <{foreach from=$order item=item name=name}> <div class="am-panel am-panel-default"> <div class="name"><{$item.name}></div> <div class="mobile"><{$item.mobile}></div> <div class="am-panel-hd"> 订单号: <{$item.order_id}> <span class="am-fr"> <{if $status =='pay_status0'}> <a href="#" class="btn orange f-r"> 待付款 </a><{/if}> </span> </div> <div class="am-panel-bd"> <ul class="am-list"> <!--缩略图在标题左边--> <li class="am-g am-list-item-desced am-list-item-thumbed am-list-item-thumb-left"> <div class="am-u-sm-4 am-list-thumb"> <{foreach from=$item.img item=images name=images}> <img src="<{$images|storager:'s'}>" alt="<{$item.order_items.0.name}>" width="80" height="80"/> <{/foreach}> </div> <div class=" am-u-sm-8 am-list-main"> <h3 class="am-list-item-hd"> 订单金额:<{$item.total_amount|cur_odr:$item.currency}> </h3> <div class="am-list-item-text">订单时间:<{$item.createtime|cdate:FDATE_STIME}></div> </div> </li> </ul> </div> </div> <{/foreach}> <{else}> <{t}>暂无售后服务订单<{/t}> <{/if}> </div>
遇到的问题
举个例子,当foreach循环数据时,因为状态的原因,如果不是该状态的数据,其中某数组为空,
array(
[0]=》11,
[1]=》null,
[2]=>1sss,
)
这个时候,要去除,为空的数组
$array_arr = array();
foreach($order as $key=>$val){
if(empty($val){
continue;
}
$array_arr[]=$val;
}
//这样就得出了数值不为空的全新的数组
或者用 php自带函数 array_filter($orders);
$array1 =array('0' => array('0'=>'first','1'=>'two','2'=>'hp','3'=>''), '1' => array('0'=>'first','1'=>'two','2'=>'hp','3'=>'aaa')); echo '<pre>'; foreach($array1 as $key=>$val){ $array2[]= array_filter($val); } print_r(array_filter($array2));