本身数组就错了,PHP可以定义[0] => Array的格式吗????
解决方案 »
- 用脚本模拟浏览器Post,结果总是能被服务器识别,怎么办
- 字符串用函数mysql_real_escape_string 过滤就100%安全吗?
- 如何用正则过滤img标签内指定的style属性?
- 【急急急】getimagesize()函数报错,请大家看看是什么原因导致报错的。
- 菜鸟问题请教高手
- *********走过路过的进来看看啊*************
- 如何用move_uploaded_file
- 请教我使用加网jsapi接口,在微网站里无法执行$.ajax
- FLEX4+php+AMFPHP1.9问题,求大神帮忙
- linux系统下用php编写邮箱验证
- 帮我看看PHP的这个配置
- 如何来提高这样的查询速度
foreach($ar as $v) {
if($v['pid'] == $pid) return $v;
if($t = foo($v['child'], $pid)) return $t;
}
return false;
}print_r(foo($d, 2)); //提取pid=2的节点极其字节点其实按原生成算法。只需将
if($v[pid] == 0) {
中的0换成所需的pid就可直接生成了
因为你提供的这种结构的数组是不易保存在数据库中的,实际保存在数据库中的是二维平面结构
function foo($ar, $pid=0) {
foreach($ar as $v) {
if($v['pid'] == $pid) return $v;
if($t = foo($v['child'], $pid)) return $t;
}
return false;
}
//下面的函数取得指定pid的值,同时调用foo函数
function fo($ar, $pid=0) {
$d=array();
$i=0;
foreach($ar as $v) {
if($v['pid'] == $pid) $d[$i++]=$v;
elseif($t = foo($v['child'], $pid)) $d[$i++]=$t;
}
return $d;
}
if($pid==0) return $ar;
foreach($ar as $v) {
if($v['pid'] == $pid) return $v;
if($t = foo($v['child'], $pid)) return $t;
}
return false;
}编程不存在固定的模式,关键在于你的思维方式
print_r(foo($ar, 1)); //提取pid=1的节点极其字节点这个只取了一部分的pid=1的节点.
[父id]={子id1,id2,id3}