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

修复随机php数组-未定义的偏移量:,php,arrays,random,undefined,offset,Php,Arrays,Random,Undefined,Offset,4.我想弄明白这件事,真是左右为难 <?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函

4.我想弄明白这件事,真是左右为难

<?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\u rand
rand(0,count($var1)-1)
rand
函数生成从0到3(包括)的数字。 数组中没有索引为3的元素
$var1
。 因此,您应该使用
array\u rand
rand(0,count($var1)-1)
rand(0,count($var1))-当值子序列rand(0,3)存在时,当随机值为3时,var1数组中没有var1[3],因此它给出了未定义的偏移量 所以试试看

rand(0,count($var1))-当值子套件rand(0,3)存在时,当随机值为3时,var1[3]不在var1数组中,因此它给出了未定义的偏移量 所以试试看


这是因为数组的计数是3,但由于数组只包含
$var[0]
(一)、
$var[1]
(二)和
$var[2]
(三),因此它无法找到
$var[3]
。因此,您需要:

$var1[rand(0,count($var1)-1)];
使用
print\u r($var1)
var\u dump($var1)
可能有助于调试此功能

但是,您可以只使用array_rand:

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


这是因为数组的计数是3,但由于数组只包含
$var[0]
(一)、
$var[1]
(二)和
$var[2]
(三),因此它无法找到
$var[3]
。因此,您需要:

$var1[rand(0,count($var1)-1)];
使用
print\u r($var1)
var\u dump($var1)
可能有助于调试此功能

但是,您可以只使用array_rand:

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

问题是$var1[3]不存在

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

您必须注意

$var1 = array("one", "two", "three");
是一样的吗

$var1 = array(0 => "one", 1 => "two", 2 => "three");
count($var1)
将返回3,因此
rand(0,count($var1))
将返回一个介于0和3之间的数字,但
$var1
中没有以3为键的值。

您必须注意

$var1 = array("one", "two", "three");
是一样的吗

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

count($var1)
将返回3,因此
rand(0,count($var1))
将返回一个介于0和3之间的数字,但
$var1
中没有以3为键的值。

为什么不使用
array\u rand
?为什么不使用
array\u rand