我试图弄清楚这一点。
<?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
?>
>rand
函数生成从 0 到 3 的数字(在您的情况下)。并且您的数组中没有索引为 3 的元素 $var1
.所以你应该使用 array_rand
或 rand(0, count($var1) - 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 为键的值。
rand(0,count($var 1)) - 当值代入 rand(0,3) 时将存在,当随机值为 3 时 var1[3] 在 var1 数组中不存在,所以它给出 未定义的偏移量所以试试
$var1[rand(0,2)];
这是因为数组的计数是 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); ?>
$var1 = array("one", "two", "three");
$var2 = $var1[rand(0,(count($var1)-1))];
echo $var2;
问题是$var 1[3]确实不存在。