使用array_rand PHP的未定义索引

时间:2014-11-12 05:12:49

标签: php arrays

我试图通过使用array_rand()选择现有数组的随机元素来重新创建数组。

但是,当使用以下代码并吐出数组时,我在引用它时得到一个未定义的索引错误。

数组为$city_users_trimmed

PHP代码:

$rand = array_rand($city_users_trimmed, 1);

$data = array($city_users_trimmed[$rand[0]]);

我知道$ city_users_trimmed中至少有一个元素,所以没有理由我明白为什么这不起作用。

我通过运行来测试它:

$data = array($city_users_trimmed[0]);

有效,因此$ city_users_trimmed数组中至少有一个元素。你看到有什么导致这个问题吗?谢谢。

3 个答案:

答案 0 :(得分:3)

检查http://php.net/manual/en/function.array-rand.php

  

当只选择一个条目时,array_rand()返回随机条目的键。否则,随机条目的键数组是   返回。

所以$ rand是你的关键,而不是$ rand [0]

答案 1 :(得分:0)

根据文件

  

mixed array_rand(array $ array [,int $ num = 1])从数组中挑选一个或多个随机条目,并返回随机条目的一个或多个键。

当你问1个键时,$ rand是一个int

答案 2 :(得分:0)

    $city_users_trimmed = array(1,2,3,4,5,6,6,7,8,8,9,90,8,6,5,4,5,76,78,75,643,54,543,53,43,5345,34534,535);
    var_dump($city_users_trimmed);
    $rand = array_rand($city_users_trimmed, 1);
    var_dump($rand);
    $data = array($city_users_trimmed[$rand[0]]);
    var_dump($data);

由于“$ data = array($ city_users_trimmed [$ rand [0]])”,此代码将为您提供第5行中的Notice Undefined index; 你不能用一个简单的变量作为数组。 所以正确的代码将是

 $city_users_trimmed = array(1,2,3,4,5,6,6,7,8,8,9,90,8,6,5,4,5,76,78,75,643,54,543,53,43,5345,34534,535);
    var_dump($city_users_trimmed);
    $rand = array_rand($city_users_trimmed, 1);
    var_dump($rand);
    $data = array($city_users_trimmed[$rand]);
    var_dump($data);