我正试图解决这个问题......
<?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
?>
答案 0 :(得分:3)
rand
函数生成从0到3(包括0和3)的数字(在您的情况下)。
并且数组$var1
中没有索引3的元素。
因此,您应该使用array_rand
或rand(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]不存在。