修复随机php数组 - 未定义的偏移量:

时间:2014-01-17 05:34:20

标签: php arrays random undefined offset

我正试图解决这个问题......

<?php

$var1 = array("one", "two", "three"); 

$var2 = $var1[rand(0,count($var1))];

echo "Why does $var2 sometimes display the error \"Undefined offset: 3\"?";

//I have already tried asking oracle for answers

?>     

5 个答案:

答案 0 :(得分:3)

rand函数生成从0到3(包括0和3)的数字(在您的情况下)。 并且数组$var1中没有索引3的元素。 因此,您应该使用array_randrand(0, count($var1) - 1)

答案 1 :(得分:1)

你必须注意

$var1 = array("one", "two", "three");

相同
$var1 = array(0 => "one", 1 => "two", 2 => "three");

count($var1)将返回3,因此rand(0, count($var1))将返回0到3之间的数字,但$var1中没有值为3的值。

答案 2 :(得分:0)

rand(0,count($ var1)) - 当值变为rand(0,3)时,当随机值为3时var1 [3]不在var1数组中,所以它给出了Undefined offset 所以试试

$var1[rand(0,2)];

答案 3 :(得分:0)

这是因为数组的计数是3,但由于数组只包含$var[0](一个),$var[1](两个)和$var[2](三个),所以它不能找$var[3]。所以你需要这样做:

$var1[rand(0,count($var1)-1)];

使用print_r($var1)var_dump($var1)可能会帮助您调试此内容。

但是,你可以使用array_rand:

<?php echo array_rand($var1); ?>

答案 4 :(得分:0)

$var1 = array("one", "two", "three"); 

$var2 = $var1[rand(0,(count($var1)-1))];
echo $var2;

问题是$ var1 [3]不存在。