$x=1;
while($row = mysql_fetch_array($sql))
{
$A = array ( $x => array ( '1' => $row['AA'],
'2' => $row['BB'],
'3' => $row['CC']));
$x++;echo $A["1"]["1"];
echo $A["2"]["1"];
echo $A["3"]["1"];
}echo $A["1"]["1"];
echo $A["2"]["1"];
echo $A["3"]["1"];
请教为何同样的数组在while 循环内可以正常显示, 在“}”外面就无法显示数组了。谢谢!

解决方案 »

  1.   

    、、、、、、真是不懂 想学PHP有啥资料不
      

  2.   

    因为$A你是在循环里面定义的吧,这样他只是个局部变量,只能在数组里进行操作,如果你想在循环外进行操作,可以在while($row = mysql_fetch_array($sql))这句代码上面先定义$A$A=array();
    while($row = mysql_fetch_array($sql)){
    ...
    }这样就能在循环外操作$A了
      

  3.   

    谢谢2楼,全局变量也试过,还是不行。放到外面,数组数据没了。
    试过以下三种在while外面定义,也不行。global $A;
    $A = array(16=>6);
    $A=array();
      

  4.   

    你可以先定义一个数组array 在循环里面把array[] = row;然后再在外面显示就对了
      

  5.   

    后面的把前面的覆盖了
    应写作:
    $A[$x] => array ( '1' => $row['AA'],
    '2' => $row['BB'],
    '3' => $row['CC']);
      

  6.   

    MS在PHP5后,就会这样。
    PHP5前,是可以正常使用的。
      

  7.   

    局部变量的作用范围是{}的代码块内部,外部无效果,改一下$x=1;
    $A=array();
    while($row = mysql_fetch_array($sql))
    {
    $A = array ( $x => array ( '1' => $row['AA'],
    '2' => $row['BB'],
    '3' => $row['CC']));
    $x++;echo $A["1"]["1"];
    echo $A["2"]["1"];
    echo $A["3"]["1"];
    }echo $A["1"]["1"];
    echo $A["2"]["1"];
    echo $A["3"]["1"];
      

  8.   

    $a=Array();
    while(...)
    {
    $a[]=Array(...);
    }
    print_r($a);
      

  9.   


    改成
    $A[] = array ( $x => array ( '1' => $row['AA'],'2' => $row['BB'],'3' => $row['CC']));
    怎么看你写的代码就别扭呢!
      

  10.   

    这个说法不对吧~~~这里没什么全局变量不全局变量的!
    根本原因应该是每次重新定义了一个$A,可以写成这样
    $A[] = array ( $x => array ( '1' => $row['AA'],
    '2' => $row['BB'],
    '3' => $row['CC']));
      

  11.   

    $x=1;
    while($row = mysql_fetch_array($sql))
    {
    $A[$x] = array ( '1' => $row['AA'],
    '2' => $row['BB'],
    '3' => $row['CC']);

    $x++;echo $A["1"]["1"];
    echo $A["2"]["1"];
    echo $A["3"]["1"];
    }echo $A["1"]["1"];
    echo $A["2"]["1"];
    echo $A["3"]["1"];