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

*/

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;

}

实现了数组的升维和降维,也许实现方式不够好,请批评指正!

原文:http://www.cnblogs.com/age0420/p/3939663.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值