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