$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循环中,检测数据,发现与存储的数据不一致,不知道原因出在哪里,请高手指点。谢谢!

解决方案 »

  1.   

    $$names[$k]  多了一个$ ,这样值就发生变化了
      

  2.   

    举个例子给你:$tmp="ok";
    $name="tmp";echo $$name;   //  结果:ok
      

  3.   

    明白你的意思for($j=0;$j <$k;$j++){ 
    echo "aa=".$$names[$j]." <br>"; 

    这是你的最终想要的结果是不?而不是for($i...) 以后记录所有的$$names数组那你干嘛非要$$names呢?每次在for($k)之前初始化就可以了啊?
      

  4.   

    即:
    $k=0; 
    $names="";
    while($rows=mysql_fetch_array($results)){ 
            $names[$k]=$rows[real_name]; 
            echo $names.$names[$k]." <br>"; 
    $k++; 
      

  5.   

    $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]}
      

  6.   

    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,这是在第一个循环和第二个循环分别获得的值
      

  7.   

    你测试一下就知道了
    $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