array_rand()期望参数1为数组

问题描述:

我试着下面的代码从数组中打印一个随机值70次,但我得到一个错误:'array_rand()期望参数1是数组'。array_rand()期望参数1为数组

$q= array("top","below","right","left"); 
function ran(){ 
    $rand_keys = array_rand($q, 1); 
    return $rand_keys[0]; 
} 

for ($m=0; $m <70 ; $m++) { 
    ran($q); 
    echo ran(); 
} 
+3

你应该通过'$ q'的功能。否则,'$ q'超出了函数的范围,并且未定义。 – Boaz 2014-10-12 08:53:59

+0

funtion ran需要接受一个参数,比如:function ran($ q) – JimL 2014-10-12 08:54:15

+0

我想你的ran()函数必须声明$ q变量。我不是php的专家,但我认为ran()中的$ q会影响数组$ q – 2014-10-12 08:54:47

全局变量通常在函数内部不可见。你应该把$q在函数参数列表:

function ran($q) { 
    $rand_keys = array_rand($q, 1); 
    return $rand_keys[0]; 
} 

然后称其为:

echo ran($q); 

是,加$ Q作为参数。 另外,您应该在索引$ rand_key处返回$ q的值。 你有点想念使用array_rand返回值。

给你这个代码:

$q = array("top","below","right","left"); 

for ($m = 0; $m <70 ; $m++) { 
    echo ran($q).' '; 
} 

function ran($q){ 
    $rand_keys = array_rand($q, 1); 
    return $q[$rand_keys]; 
}