Я новичок в 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(), похоже, не работает, как рекламируется, по крайней мере, если массив заполнен пользовательскими объектами.
'перетасовка()' возвращает логическое значение для успеха/неуспеха. Он рандомизирует фактический массив, в котором вы прошли. –
'shuffle()' передает значение по ссылке, нет необходимости назначать его переменной. – Viral