Maison > développement back-end > tutoriel php > php 非递归树形数组构造函数

php 非递归树形数组构造函数

WBOY
Libérer: 2016-07-25 08:57:06
original
988 Les gens l'ont consulté
分享二个不用递归实现的树形数组的构造函数,有需要的朋友,作个参考。

非递归树形数组构造函数,代码:

<?php
/**
*创建父节点树形数组 
* 参数 $ar 数组,邻接列表方式组织的数据 
* $id 数组中作为主键的下标或关联键名 
* $pid 数组中作为父键的下标或关联键名 
* 返回 多维数组
* by bbs.it-home.org
**/
function find_parent($ar, $id = 'id', $pid = 'pid') {
foreach ( $ar as $v )
$t [$v [$id]] = $v;
foreach ( $t as $k => $item ) {
if ($item [$pid]) {
if (! isset ( $t [$item [$pid]] ['parent'] [$item [$pid]] ))
$t [$item [$id]] ['parent'] [$item [$pid]] = & $t [$item [$pid]];
}
}
return $t;
}
/**
* * 创建子节点树形数组 * 参数 * 
* $ar 数组,邻接列表方式组织的数据 
* $id 数组中作为主键的下标或关联键名 
* $pid
* 数组中作为父键的下标或关联键名 * 返回 多维数组 *
*/
function find_child($ar, $id = 'id', $pid = 'pid') {
foreach ( $ar as $v )
$t [$v [$id]] = $v;
foreach ( $t as $k => $item ) {
if ($item [$pid]) {
$t [$item [$pid]] ['child'] [$item [$id]] = & $t [$k];
}
}
return $t;
}

$data = array (
array (
'ID' => 1,
'PARENT' => 0,
'NAME' => '祖父' 
),
array (
'ID' => 2,
'PARENT' => 1,
'NAME' => '父亲' 
),
array (
'ID' => 3,
'PARENT' => 1,
'NAME' => '叔伯' 
),
array (
'ID' => 4,
'PARENT' => 2,
'NAME' => '自己' 
),
array (
'ID' => 5,
'PARENT' => 4,
'NAME' => '儿子' 
) 
);
$p = find_parent ( $data, 'ID', 'PARENT' );
$c = find_child ( $data, 'ID', 'PARENT' );
print_r($c);
exit;
?>
Copier après la connexion


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal