ホームページ  >  記事  >  バックエンド開発  >  返されたデータセットを配列ツリーに変換します

返されたデータセットを配列ツリーに変換します

WBOY
WBOYオリジナル
2016-07-25 09:01:281356ブラウズ
のように
$old = 配列(
array('id'=>1,'pid'=>0,'name'=>'first' )
array('id'=>2,'pid'=>1,'name'=>'2 番目' ) ,
array('id'=>3,'pid'=>2,'name'=>'third'),

);
print_r(list_to_tree($old,'id','pid','_child'));
出力は次のとおりです
$old = 配列(
array(
'id'=>1,
'pid'=>0,
'name'=>'first',
'_child'=>array(
'id'=>2,
' pid' =>1,
'名前'=>'2番目'
'_child'=>array('id'=>3,'pid'=>2,'name'=>'3番目' ),
)
)

);
  1. /**
  2. * 返されたデータセットをツリーに変換します
  3. * @access public
  4. * @param array $list 変換するデータセット
  5. * @param string $pid 親タグフィールド
  6. * @param string $level レベルタグフィールド
  7. * @配列を返す
  8. */
  9. function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
  10. // 作成Tree
  11. $tree = array();
  12. if(is_array($list)) {
  13. // 主キーに基づいて配列参照を作成します
  14. $refer = array();
  15. foreach ($list as $key => $data) {
  16. $refer[$data[$pk]] =& $list[$key];
  17. }
  18. foreach ($list as $key => $data) {
  19. // 親が存在するかどうかを判定します
  20. $ parentId = $ data[$pid];
  21. if ($root == $parentId) {
  22. $tree[] =& $list[$key];
  23. }else{
  24. if (isset($refer[$parentId]) ) {
  25. $parent =& $refer[$parentId];
  26. $parent[$child][] =& $list[$key];
  27. }
  28. }
  29. }
  30. }
  31. return $tree;
  32. }
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。