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



我试图弄清楚这一点。

<?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_randrand(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]确实不存在。

最新更新