重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你的指的是无限级吧,A是B和C的父级,B是D,E,F的父级,C是G和H的父级,D又是I,J,K的父级。一般都是采用递归算法。
创新互联拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕10年,专业且经验丰富。10年网站优化营销经验,我们已为1000多家中小企业提供了网站建设、成都网站建设解决方案,按需求定制网站,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!
/**
* 无限级的遍历
* @param [array] $data 所有数据
* @param integer $parent parent为0时,是最祖先级
* @param integer $level 记录几级
* @return [array] 已经遍历好的数组
*/
public function category($data,$parent=0,$level=0){
$array = [];
foreach ($data as $key = $value) {
if($value['parent'] == $parent){
$value['level'] = $level;
$array[] = $value;
$this-category($data,$value['id'],$level+1);
}
}
return $array;
}
这当然是不行的了,上面的告诉你的也是错误的,因为原因在于你循环的时候进行了数据库的查询,所以每次都是新的数据,指针当然要从第一条开始了。
所以不是你的循环的错误,而是你数据库查询代码位置的错误
要这样写
$num=mysql_query("select
*
from
china_city
where
parentid=0");
$n=
mysql_num_rows
($num);
for($i=1;$i=$n;$i++){
${"row".$i}=mysql_fetch_array($num);
echo
$i."
".${"row".$i}['city']."
";
}
一般都是用foreach或while写的
foreach(mysql_fetch_array($num)
as
$key=$value){}
while($row
=mysql_fetch_array($num)){}
完整的代码如下:
$con = mysql_connect('localhost(服务器地址)', '数据库用户名', '数据库密码');
//数据库连接。
if (!$con)
{
die('Could not connect: ' . mysql_error());
}//连接失败输出错误
mysql_select_db('数据库名', $con);
$sql = "select Name from 表名;";
$result = mysql_query($sql,$con);
while($row= mysql_fetch_array($result)){
echo $row['Name'];
}