php 递归分类 $arr = array() 具体作用
$conn=mysql_connect('localhost','root','123456')ordie("Error:".mysql_error());mysql_s...
$conn = mysql_connect('localhost', 'root', '123456') or die("Error: " . mysql_error());
mysql_select_db("test", $conn);
mysql_query("set names utf8", $conn);
/*
数据表结构:
id int,
pid int, 上级id
name varchar // 名称
*/
function get_array($id = 0)
{
global $conn;
$sql = "select * from e_cate where fid = '{$id}'";
$res = mysql_query($sql, $conn);
$arr = array();
if($res)
{
while($rows = mysql_fetch_assoc($res))
{
$rows['child'] = get_array($rows['id']);
$arr[] = $rows;
}
return $arr;
}
}
请问里面的 $arr = array(); 到底是怎么回事,为什么不是把全部的 $arr 数组置空呢?
和里面的 $arr[] = $rows, return $arr 中的 $arr 是什么具体关系??? 展开
mysql_select_db("test", $conn);
mysql_query("set names utf8", $conn);
/*
数据表结构:
id int,
pid int, 上级id
name varchar // 名称
*/
function get_array($id = 0)
{
global $conn;
$sql = "select * from e_cate where fid = '{$id}'";
$res = mysql_query($sql, $conn);
$arr = array();
if($res)
{
while($rows = mysql_fetch_assoc($res))
{
$rows['child'] = get_array($rows['id']);
$arr[] = $rows;
}
return $arr;
}
}
请问里面的 $arr = array(); 到底是怎么回事,为什么不是把全部的 $arr 数组置空呢?
和里面的 $arr[] = $rows, return $arr 中的 $arr 是什么具体关系??? 展开
1个回答
展开全部
$arr = array(); 只是 定义 数组 而且是在 循环外边定义的 当然不会清空数组,
就是在循环外边定义一个数组
然后在 循环里边 给它赋值。。
就是在循环外边定义一个数组
然后在 循环里边 给它赋值。。
更多追问追答
追问
那当再次递归时,再次定义这个 $arr = array(); 这个应该跟上一次定义的一个样吧,是同一个 $arr 数组变量,这样为什么不是把 $arr置空了呢?而是之前的 $rows 也还保留在 $arr[] 里面????
追答
定义 $arr = array(); 是在 while 循环的外边 所以不会 置空
而 $arr = array(); 这个东西 是定义 数组 数组就是 一组一组的数据 第二次循环 只是把新的数据 追加进去而已 并不会置空。。。。。。。。。。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询