首页 > 代码库 > php数组的升维和降维处理
php数组的升维和降维处理
最近学习了一下php数组的升维和降维,废话少说,上Demo。
//假设有数组降维前,如下$array = array( ‘a‘ => array( ‘b‘ => 1, ‘c‘ => array( ‘d‘ => 2, ‘e‘ => 3 ) ), ‘f‘ => 4, ‘g‘ => array( ‘h‘=>5 ) );
降维后,如下:
//降维后$array = array( ‘0‘ => a->b->1, ‘1‘ => a->c->d->2, ‘2‘ => a->c->e->3, ‘3‘ => f->4, ‘4‘ => g->h->5);
实现的function如下:
/** * 将多维数组降维成一维数组,递归实现 * @param unknown $arr * @param string $delimiter * @param string $key * @return boolean|Ambigous <multitype:string , multitype:> */function multiToSingle($arr, $delimiter = ‘->‘,$key = ‘ ‘) { $resultAry = array(); if (!(is_array($arr) && count($arr)>0)) { return false; } foreach ($arr AS $k=>$val) { $newKey = trim($key . $k . $delimiter); if (is_array($val) && count($val)>0) { $resultAry = array_merge($resultAry, multiToSingle($val, $delimiter, $newKey)); } else { $resultAry[] = $newKey . $val; } } return $resultAry;}
数组有降必有升,升维来了:
/** * 将一维数组升维成多维数组 * @param unknown $arr * @param string $delimiter * @return multitype: */function singleToMulti($arr, $delimiter = ‘->‘){ $endAry = array(); foreach ($arr AS $key=>$val) { $sAry = explode($delimiter, $val); $len = count($sAry); $ary = array(); for ($i=$len-2; $i>-1; $i--) { if ($i == $len-2) { $ary[$sAry[$i]] = $sAry[$i+1] ; } else { $ary = array($sAry[$i] => $ary); } } $endAry = array_merge_recursive($endAry, $ary); } return $endAry;}
实现了数组的升维和降维,也许实现方式不够好,请批评指正!
php数组的升维和降维处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。