<?php
$a=range(1,33);
$b=array_rand($a,6);
print_r($b);
echo $a[$b[0]]."\n";
echo $a[$b[1]]."\n";
echo $a[$b[2]]."\n";
echo $a[$b[3]]."\n";
echo $a[$b[4]]."\n";
echo $a[$b[5]];
?>
大家看下为什么这二种输出结果会不同。
print_r输出的值中会出现 0 
而ECHO 不会出现,ECHO 的值自动+1 。
为什么呢?

解决方案 »

  1.   

    array_rand取到的结果是数组的索引,而不是值,当然是从0开始的。$a 是1,2,3,4,5,33这个数组,也就是值,怎么可能会是0呢?$a 相当于
    $a = array(0=>1,1=>2,2=>3.....,32=>33;
      

  2.   

    Array ( [0] => 0 [1] => 13 [2] => 16 [3] => 21 [4] => 24 [5] => 27 ) 
    ~print_r $b时~会出现这种情况~ ARRAY[0]=>0.
    我这里的range(1.33)是1-33了啊~
      

  3.   

    你要分清楚下标跟值的差别,
    这时候的数组是$a[0]=1;$a[1]=2;............$a[32]=33;,下标是0-32,值才是1-33
    而array_rand($a,6)返回的是下标
      

  4.   

    // 红色球    
    $luckyRed = array();    
    // 蓝色球    
    $luckyBlue = mt_rand(1, 16);    
       
    do {    
        $luckyTmp = mt_rand(1, 33);    
        if (!in_array($luckyTmp, $luckyRed)) $luckyRed[] = $luckyTmp;    
    } while(count($luckyRed) < 6);    
       
    // 输出    
    echo '红色球:';    
    foreach ($luckyRed as $red) {    
        echo $red . ' ';   
    }    
    echo '<br />蓝色球:' . $luckyBlue; 
      

  5.   

    i服了you,你把$a里面的值和$b存储的$a索引搞反了~~多加一行print_r($a)分析下~~