php 页面显示数组的值,php页面数组展示处理通用函数

缺点:相同数据格式的数值无法叠加,页面数据格式太繁琐,最初下标值为整数的结构会出错

假设基础数据字段列表baseRowList格式是 array(array('pid'=>xxxx, 'id'=>xxxx, 'name'=>xxx, 'age'=>xxx), ....)

页面数据显示dataStruct格式是

array(

'list'=>array('pid'=> array('id' => array('name', 'age'))),

'nameList' => array('id'=>'name')

),

1. 将dataStruct数组 递归抽取转化为可显示层级结构的字符串

如将dataStruct转化为structList = array("list,pid,id,name", "list,pid,id,age", "nameList,id,name"), getStructList函数

2. 读取一条基础数据,循环分隔structList,将其中的字串关键字替换为基础数值或者不变

3. 重复循环2直至基础数据所有处理完成

代码如下:

private function getsRowStructData($baseRowList, $dataStruct){

$list = array();

if($baseRowList){

$structList = self::getStructList($dataStruct);

$rowKeyArr = self::getRowKeyArr($baseRowList);

foreach ($baseRowList as $row){

if($structList)

foreach ($structList as $struct){

$list = $list + self::getOneStructData(explode(',', $struct), $row, $rowKeyArr);

}

}

}

return $list;

}

// 获取 列表关键字下标数组

private function getRowKeyArr($list){

$arr = NULL;

if($list)

foreach ($list as $row)

if(is_array($row))

foreach ($row as $k => $v)

$arr[] = $k;

return $arr;

}

// 将层级结构数组中的关键字 替换为实际值,并返回 页面结构数据

private function getOneStructData($oneStructList, $dataRow, $rowKeyArr){

$row = array();

if($oneStructList){

for($i=count($oneStructList)-1; $i>=0; $i--){

if(in_array($oneStructList[$i], $rowKeyArr)){

$row = ($row) ? array($dataRow[$oneStructList[$i]]=>$row) : $dataRow[$oneStructList[$i]] ;

}

else{

$row = ($row) ? array($oneStructList[$i]=>$row) : $oneStructList[$i];

}

}

}

return $row;

}

// 根据页面显示的数据结构返回  层级结构数组

private function getStructList($struct, $list=array(), $prefix=NULL){

$tmpList = $list;

if(is_array($struct)){

foreach ($struct as $k => $v){

if(is_array($v)){

$tmpPrefix = ($prefix) ? "{$prefix},{$k}": $k;

$tmpList = self::getStructList($v, $tmpList, $tmpPrefix);

}

else{

$tmpPrefix = ($prefix) ? "{$prefix},{$v}": $v;

array_push($tmpList, $tmpPrefix);

}

}

return $tmpList;

}

elseif($struct){

array_push($tmpList, ($prefix) ? "{$prefix},{$struct}": $struct);

return self::getStructList(NULL, $tmpList, $prefix);

}

else

return $tmpList;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值