求一维数组机关为“树形”数组的方法

WBOY
リリース: 2016-06-13 11:46:53
オリジナル
949 人が閲覧しました

求一维数组组织为“树形”数组的方法
好吧……问题的名字有点儿扯……
有数组输入如下:

<br />[{id=>'00'},<br />{id=>'01'},<br />{id=>'22'},<br />{id='0001'},<br />{id=>'2234'}]<br />
ログイン後にコピー

现在想将这个数组组织为以下形式:
<br />[<br />{id=>'00',children=>{{id=>'0001'}} },<br />{id=>'01',children=>{} },<br />{id=>'22',children=>{{id=>'2234'}} }<br />]<br />
ログイン後にコピー

其中的id是字符串,位数为双数位(2、4、6、8……),除了2位的id之外,其余位数的id总能找到上一级id(即元素A:2234必然能找到id为22【也就是left( 0,len(A[id])-2 )】的元素
虽然多次遍历也可行,但想能实现以下功能:
1、能正确地进行组织
2、每一次组织之后,原始数组会减少,比如第一次将2位的都处理了,那么在原始数组中id位数为2的其实就没有必要了,就全部unset
求教啊~
------解决方案--------------------
建立一个2维数组 array[id][child] 遍历一次原始数组就可以了
遇到两位的判断是否存在 不存在就插入 遇到不是两位的就认为是child放到该放的地方
<br />$a = array('4401','00','0001','0002','22','2201');<br />		$b = array();<br />		for($i = 0; $i < count($a); $i++)<br />		{<br />		    if(strlen($a[$i]) == 2)<br />		    {<br />		        if(!array_key_exists($a[$i],$b))<br />		        {<br />		        		$b[$a[$i]] = array();<br />		      	}	<br />		    }<br />		    else<br />		    {<br />		        $id = substr($a[$i], 0, 2);<br />		        if(isset($b[$id]))<br />		        {<br />				        if(!in_array($a[$i], $b[$id]))<br />				        {<br />				           $b[$id][] = $a[$i];	<br />				        }<br />		      	}<br />		      	else<br />		      	{<br />		      			$b[$id] = array();<br />		      			$b[$id][] = $a[$i];    	<br />		      	} 	<br />		    }	<br />		}<br />		print_r($b);<br />
ログイン後にコピー

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート