一个查询:$pid = $_GET['pid'];
$sql = "SELECT * FROM city_area WHERE parentid = '$pid'";
$query = $db->query($sql);
$count = $db->rows($sql);for($i='0';$i<$count;$i++)
{
$rows = $db->loop_fetch_array($query);
$in = '"'.$i.'"=>array("pid"=>"'.$rows[areaid].'","name"=>"'.$rows[areaname].'"),';
$a .= $in;
}
echo $a.'<br>';//$data = array("0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"),);
$data = array($a);echo count($data);
第一个echo结果:"0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"),
第二个echo结果:1为什么不是2呢。我把代码红色部分禁用,绿色部分启用,第二个echo结果:2。这个是什么原因?

解决方案 »

  1.   

    绿色部分代码://$data = array("0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"),);
    红色部分代码:$data = array($a);怎么才能统计为2 ?
      

  2.   

    $data = array($a); 等于你把a数组又建了个数组放到这个变量里就等于
    $data = [0] => $a所以只有一项了
      

  3.   

    直接让$data = $a 就可以变成两项了。。
      

  4.   

    我$a输出就是  "0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"),对,相当于多维数组。$data = array("0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"),)echo count($data) 就是2,但用$data = array($a)输出就是1
      

  5.   

    没有明白。$a和"0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"), 是等价的啊为什么这样写array($a)就是1,array("0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"3","name"=>"贵州"),)就是2
      

  6.   

    再详细地给你解释下:$a 是你一开始建立的数组,你用array函数这个函数是用来建立另外一个数组而不是用来数组拷贝的,所以也就是说你把$a这个数组放到了你自己新建的这个数组的[0]项中所以当你count这个新的数组时它只能找到[0]这一项,于是乎你的结果就是1了如果你想实现数组拷贝直接用付值号"="就可以完成操作,当你用$data = $a 这时$data就和$a有着同样的结构了也就是说它也有[0],[1]两项所以当你count就得2了。。
    希望这回能让你明白如果还不明白我就真没招了lz就只能好好恶补下array的知识了。。
      

  7.   

    建议lz好好看看php.net中介绍array这个函数的介绍,发现你还是对这个函数不是很了解。
      

  8.   

    是这样哦,谢谢TOTO42的帮助。其实是这样
    $data=array("0"=>array("pid"=>"1","name"=>"四川"),"1"=>array("pid"=>"2","name"=>"成都"),"2"=>array("pid"=>"3","name"=>"云南"));//模拟查询结果这是一个JS返回的值。我想把array里面的内容用循环查询赋值后再加到这个array里面,应该怎么弄?不知道我说清楚没有。for($i='0';$i<$count;$i++)
    {
        $rows = $db->loop_fetch_array($query);
        $in = '"'.$i.'"=>array("pid"=>"'.$rows[areaid].'","name"=>"'.$rows[areaname].'"),';
        $a .= $in;
    }就是把$a加入的 array里面去,就成了一个多维数组。
      

  9.   


    可以考虑用array_push或者array_shift虽然我也确定我真的理解你的意思没有kaka
      

  10.   

    $pid = $_GET['pid'];
    $sql = "SELECT * FROM city_area WHERE parentid = '$pid'";
    $query = $db->query($sql);
    $count = $db->rows($sql);$data = array();
    for($i='0';$i<$count;$i++) {
        $row = $db->loop_fetch_array($query);
        $data[] = array('pid'=>$row['areaid'],'name'=>$row['areaname']);
    }echo count($data);