php 数组放进去的值,取出后不一致。

cd2002 2010-01-07 10:28:37
$names="data_".$i;
$results=mysql_query($sqls,$db);
$k=0;
while($rows=mysql_fetch_array($results)){
$$names[$k]=$rows[real_name];
echo $names.$$names[$k]."<br>";
$k++;
}
for($j=0;$j<$k;$j++){
echo "aa=".$$names[$j]."<br>";
}
说明:$i是在一个循环中的变量。要实现的功能:有未知组数据,为了在后面方便获得数据,我定义一个有规律的数组名称:$names="data_".$i;然后在上面这个while里面把数据放进数组,在下面的for循环中,检测数据,发现与存储的数据不一致,不知道原因出在哪里,请高手指点。谢谢!
...全文
93 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingfish 2010-01-07
  • 打赏
  • 举报
回复
超级学习了
xuzuning 2010-01-07
  • 打赏
  • 举报
回复
你测试一下就知道了
$i = 0;
$names="data_".$i;
//$results=mysql_query($sqls,$db);
$k=0;
for($p=0;$p<10;$p++) {
${$names}[$k]=$p;
echo $names."[$k]=".${$names}[$k]." <br>";
$k++;
}
for($j=0;$j <$k;$j++){
echo "aa[$j]=".${$names}[$j]." <br>";
}
×××××××
data_0[0]=0
data_0[1]=1
data_0[2]=2
data_0[3]=3
data_0[4]=4
data_0[5]=5
data_0[6]=6
data_0[7]=7
data_0[8]=8
data_0[9]=9
aa[0]=0
aa[1]=1
aa[2]=2
aa[3]=3
aa[4]=4
aa[5]=5
aa[6]=6
aa[7]=7
aa[8]=8
aa[9]=9
cd2002 2010-01-07
  • 打赏
  • 举报
回复
1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15;
1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,1.4606e+25,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,7.6651e+15,这是在第一个循环和第二个循环分别获得的值
cd2002 2010-01-07
  • 打赏
  • 举报
回复
我也考虑过这个问题,但是获得的数据差不多,不统一。
xuzuning 2010-01-07
  • 打赏
  • 举报
回复
$names="data_".$i;
$results=mysql_query($sqls,$db);
$k=0;
while($rows=mysql_fetch_array($results)){
${$names}[$k]=$rows[real_name];
echo $names.${$names}[$k]." <br>";
$k++;
}
for($j=0;$j <$k;$j++){
echo "aa=".${$names}[$j]." <br>";
}

发生歧义了
你的 $$names[$k]=$rows[real_name];
本意是:
${'data_$i}[$k]=$rows[real_name];
设 $i = 0; 即
$data_0[$k]=$rows[real_name];

而php将 $$names[$k] 解释为 ${$names[$k]}


jaxio 2010-01-07
  • 打赏
  • 举报
回复
即:
$k=0;
$names="";
while($rows=mysql_fetch_array($results)){
$names[$k]=$rows[real_name];
echo $names.$names[$k]." <br>";
$k++;
}

jaxio 2010-01-07
  • 打赏
  • 举报
回复
明白你的意思

for($j=0;$j <$k;$j++){
echo "aa=".$$names[$j]." <br>";
}


这是你的最终想要的结果是不?而不是for($i...) 以后记录所有的$$names数组

那你干嘛非要$$names呢?每次在for($k)之前初始化就可以了啊?
cd2002 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liuahuilele 的回复:]
引用 2 楼 cd2002 的回复:
引用 1 楼 jaxio 的回复:
$$names[$k]  多了一个$ ,这样值就发生变化了
该如何用呢?

去掉一个了


[/Quote]我要用="data_".$i这个的值。
liuahuilele 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cd2002 的回复:]
引用 1 楼 jaxio 的回复:
$$names[$k]  多了一个$ ,这样值就发生变化了
该如何用呢?
[/Quote]
去掉一个了

cd2002 2010-01-07
  • 打赏
  • 举报
回复
我知道,这就是我想要的,这个地方应该没有问题,在线等。
jaxio 2010-01-07
  • 打赏
  • 举报
回复
举个例子给你:

$tmp="ok";
$name="tmp";

echo $$name; // 结果:ok
cd2002 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jaxio 的回复:]
$$names[$k]  多了一个$ ,这样值就发生变化了
[/Quote]该如何用呢?
jaxio 2010-01-07
  • 打赏
  • 举报
回复
$$names[$k] 多了一个$ ,这样值就发生变化了

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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