数据库里有个张member表,字段...中有 paretner....(记录其他member的ID)...我想找出所有paretner不为空的...
比如a 的paretner记录b的ID...b中paretner记录c的ID..
现在想写函数...任意ID传进来...返回一个数组....(里面记录着该ID所有的paretner)....
问题可能不好理解....再画图..
a->b->c->d(这个是关系依靠paretner记录ID)
...
就是说a的父亲是b..b的父亲是c...c的父亲是d......一直走下去...直...n(n 没有父亲,即paretner没有记录)
如果...我传c的ID进来...就返回数组([0]=>'c_id(c的id)',[1]=>'d_id(d的ID)')....这样子....
不知道..哪位高人能解.......请快快现身.....我现在都没有分发贴了...
比如a 的paretner记录b的ID...b中paretner记录c的ID..
现在想写函数...任意ID传进来...返回一个数组....(里面记录着该ID所有的paretner)....
问题可能不好理解....再画图..
a->b->c->d(这个是关系依靠paretner记录ID)
...
就是说a的父亲是b..b的父亲是c...c的父亲是d......一直走下去...直...n(n 没有父亲,即paretner没有记录)
如果...我传c的ID进来...就返回数组([0]=>'c_id(c的id)',[1]=>'d_id(d的ID)')....这样子....
不知道..哪位高人能解.......请快快现身.....我现在都没有分发贴了...
-> RETURNS VARCHAR(1000)
-> BEGIN
-> DECLARE sTemp VARCHAR(1000);
-> DECLARE sTempP VARCHAR(1000);
->
-> SET sTemp = cast(Id as CHAR);
-> SET sTempP =sTemp;
->
-> WHILE sTempChd is not null DO
-> SELECT paretner INTO sTempP FROM table where id = sTempP;
-> SET sTemp = concat(sTemp,',',sTempP);
-> END WHILE;
-> RETURN sTemp;
->
-> END;
要用php怎样写函数数....呐..
{
$parent_id =array();
$model_member =& m('member');
$parent_result = $model_member->find(array(
'conditions' => 'user_id = \''.$uid.'\'',
'fields' => 'this.parent'
));
if (is_array($parent_result)&&count($parent_result))
{
foreach($parent_result as $key=>$value){
// echo $key.":".$value;
foreach ($value as $key=>$val){
if($val){
$parent_id[]=$val;
}
if($val&&strpos($key,'p')!==false){
//暂停...
// echo $val;
}
}
}
}
print_r($parent_id);
return $parent_id;
}这个是我写的,,,可是只能执行一次...得一组数据...郁..
function getParentTree($uid) {
$parent_id = array();
$model_member =& m('member');
$parent_result = $model_member->find(array(
'conditions' => 'user_id = \''.$uid.'\'',
'fields' => 'this.parent'
));
if (is_array($parent_result)&&count($parent_result)) {
foreach($parent_result as $key=>$value){
foreach ($value as $key2=>$val){
if($val){
$parent_id = array_merge($v,getParentTree($val));
}
}
}
}
return $parent_id;
}楼主你是罪人。。我把页面关了才敲的代码太萌了
试试吧,把你写的改了改。
function _get_layer_coutn($uid)
{
static $parent_id =array();
$model_member =& m('member');
$parent_result = $model_member->find(array(
'conditions' => 'user_id = \''.$uid.'\'',
'fields' => 'this.parent'
));
if (is_array($parent_result)&&count($parent_result))
{
foreach($parent_result as $key=>$value){
foreach ($value as $key=>$val){
if($val){
$parent_id[]=$val;
_get_layer_coutn($val);
}else{
print_r($parent_id);
}
}
}
}}
array_merge($v,getParentTree($val));
应该是
array_merge($val,getParentTree($val));
Array ( [0] => 300 [1] => Array ( [0] => 25 [1] => Array ( [0] => 10 [1] => Array ( ) ) ) )
............
我想要
Array([0]=>300
[1]=25
[3]=>10);
不知道..要怎么弄呢...
$parent_id = array_merge(array($v),getParentTree($val));
$parent_id = array($uid);
$model_member =& m('member');
$parent_result = $model_member->find(array( 'conditions' => 'user_id = \''.$uid.'\'', 'fields' => 'this.parent' ));
while ($parent_result) {
$temp = $parent_result->member->parent;
$parent_id[] = $temp;
$parent_result = $model_member->find(array( 'conditions' => 'user_id = \''.$temp.'\'', 'fields' => 'this.parent' ));
}
return implode(',',$parent_id);
}