[英]Multidimensional Array convert
我有這個多維數組:
$a = array(
array('id' => 1,'parent_id' => 'null'),
array('id' => 3,'parent_id' => 'null'),
array('id' => 4,'parent_id' => 3 ),
array('id' => 5,'parent_id' => 4 ),
array('id' => 8,'parent_id' => 1 ),
array('id' => 6,'parent_id' => 5 ),
array('id' => 7,'parent_id' => 4 ),
array('id' => 2,'parent_id' => 1 ) )
我想要下面的結果,基於關系id
和parent_id
:
$b = array(
array('id' => 1,'parent_id' =>' null','children'=>array(
array('id' => 2,'parent_id' => 1 ),
array('id' => 8,'parent_id' => 1 )
)
),
array('id' => 3,'parent_id' => 'null' ,'children'=>array(
array('id' => 4,'parent_id' => 3,'children'=>array(
array('id' => 5,'parent_id' => 4 ,'children'=>array(
array('id' => 6,'parent_id' => 5 )
)),
array('id' => 7,'parent_id' => 4 )
)),
))
);
這是代碼,希望它能對您有所幫助。 $result
是您想要的結果數組。
$result = array();
foreach( $a as $aRow ) {
if ( $aRow["parent_id"] != 'null') {
$aRowID = findParentRow( $a , $aRow["parent_id"] );
if ( $aRowID > -1 ) {
$result = insertChild( $result , $aRowID , $aRow );
}
}
}
這個功能可以幫助您找出哪個鍵是父數組並返回鍵給您
function findParentRow( $arr , $id ) {
$rowID = -1;
foreach ( $arr as $row ) {
if ( $row["id"] == $id ) {
$rowID = key( $arr );
return $rowID;
}
}
return $rowID;
}
根據行號插入子數組
function insertChild( $arr , $rowID , $child ) {
if ( !isset( $arr[$rowID]["children"] ) ) {
$arr[$rowID]["children"] = array();
}
array_push( $arr[$rowID]["children"] , $child );
return $arr;
}
復制代碼具有兩個功能,將很有吸引力。
提醒您,碰撞陣列中的鍵可能存在危險。 如果您有兩個重復的密鑰,則此代碼可能無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.