我是PHP的新手(来自ASPNET),我在理解为什么这不起作用时遇到了一些麻烦。我想调整一个数组(自定义Quote对象),但是当我调用shuffle()函数时,它似乎只返回一个整数值(可能是一个随机数)。
根据手册,我应该可以调用shuffle并传入我的数组: http://php.net/manual/en/function.shuffle.php
/**
* @public
* Retrieves a collection of Quote objects from the datasource
* @param string $author An optional author to filter on
* @return array
*/
public function GetRandom($author='') {
//ToDo: Work out correct way to randomize array!
//return shuffle($this->GetAllQuotes($author));
// This is my lame temporary work-around until I work out how to
// properly randomize the array from $this->GetAllQuotes(string)
$quotes = $this->GetAllQuotes($author);
$rand_item = shuffle($quotes);
$rand_arr[] = $quotes[$rand_item];
return $rand_arr;
}
/**
* @protected
* Retrieves a collection of Quote objects from the datasource
* @param string $author An optional author to filter on
* @return array
*/
protected function GetAllQuotes($author='') {
// This code builds Quotes array from XML datasource
}
我真的很喜欢GetRandom函数返回一个随机数组的Quote对象,而不仅仅是一个,但是shuffle()功能似乎不像宣传的那样工作,至少不是如果数组那样填充自定义对象。
答案 0 :(得分:2)
Shuffle通过引用获取数组,因此您不能在return语句中使用它内联。 php中的大多数数组排序函数都是参考。
解决方案:
public function GetRandom($author='') {
$quotes = $this->getAllQuotes($author);
shuffle($quotes);
return $quotes;
}