php 二维数组使用问题

cfmoe 2010-06-14 02:53:01
$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 循环内可以正常显示, 在“}”外面就无法显示数组了。谢谢!
...全文
200 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwn1902 2010-06-29
  • 打赏
  • 举报
回复
按照15 16楼的就行了......
Dleno 2010-06-29
  • 打赏
  • 举报
回复
$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"];
igaojie 2010-06-29
  • 打赏
  • 举报
回复
这个说法不对吧~~~这里没什么全局变量不全局变量的!
根本原因应该是每次重新定义了一个$A,可以写成这样
$A[] = array ( $x => array ( '1' => $row['AA'],
'2' => $row['BB'],
'3' => $row['CC']));

[Quote=引用 2 楼 moonx 的回复:]
因为$A你是在循环里面定义的吧,这样他只是个局部变量,只能在数组里进行操作,如果你想在循环外进行操作,可以在while($row = mysql_fetch_array($sql))这句代码上面先定义$A

PHP code

$A=array();
while($row = mysql_fetch_array($sql)){
...
}


这样就能在循环外操作$A了
[/Quote]
在-云端 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sibang 的回复:]

局部变量的作用范围是{}的代码块内部,外部无效果,改一下
PHP code

$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……
[/Quote]

改成
$A[] = array ( $x => array ( '1' => $row['AA'],'2' => $row['BB'],'3' => $row['CC']));


怎么看你写的代码就别扭呢!
LuciferStar 2010-06-29
  • 打赏
  • 举报
回复
$a=Array();
while(...)
{
$a[]=Array(...);
}
print_r($a);
灰灰 2010-06-29
  • 打赏
  • 举报
回复
友情帮顶
www_7di_net 2010-06-29
  • 打赏
  • 举报
回复
局部变量的作用范围是{}的代码块内部,外部无效果,改一下

$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"];

hguisu 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 moonx 的回复:]
因为$A你是在循环里面定义的吧,这样他只是个局部变量,只能在数组里进行操作,如果你想在循环外进行操作,可以在while($row = mysql_fetch_array($sql))这句代码上面先定义$A

PHP code

$A=array();
while($row = mysql_fetch_array($sql)){
...
}


这样就能在循环外操作$A了
[/Quote]

正是!
LuciferStar 2010-06-21
  • 打赏
  • 举报
回复
MS在PHP5后,就会这样。
PHP5前,是可以正常使用的。
zhen00000 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xuzuning 的回复:]
后面的把前面的覆盖了
应写作:
$A[$x] => array ( '1' => $row['AA'],
'2' => $row['BB'],
'3' => $row['CC']);
[/Quote]
这个对的
xuzuning 2010-06-15
  • 打赏
  • 举报
回复
后面的把前面的覆盖了
应写作:
$A[$x] => array ( '1' => $row['AA'],
'2' => $row['BB'],
'3' => $row['CC']);
战斗生活 2010-06-14
  • 打赏
  • 举报
回复
你可以先定义一个数组array 在循环里面把array[] = row;

然后再在外面显示就对了
zhanlang9075 2010-06-14
  • 打赏
  • 举报
回复

PHP新手来学习了
cfmoe 2010-06-14
  • 打赏
  • 举报
回复
请教三楼:这样会冲突吗?如何解决?谢谢!
cfmoe 2010-06-14
  • 打赏
  • 举报
回复
谢谢2楼,全局变量也试过,还是不行。放到外面,数组数据没了。
试过以下三种在while外面定义,也不行。

global $A;
$A = array(16=>6);
$A=array();
nindeping4 2010-06-14
  • 打赏
  • 举报
回复
你每次循环都声明了一个名字叫$A的数组
馒头亮 2010-06-14
  • 打赏
  • 举报
回复
因为$A你是在循环里面定义的吧,这样他只是个局部变量,只能在数组里进行操作,如果你想在循环外进行操作,可以在while($row = mysql_fetch_array($sql))这句代码上面先定义$A

$A=array();
while($row = mysql_fetch_array($sql)){
...
}

这样就能在循环外操作$A了
she_0506 2010-06-14
  • 打赏
  • 举报
回复
、、、、、、真是不懂 想学PHP有啥资料不

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧