2015-08-07 5 views
0

У меня есть многомерный массив, состоящий первоначально из почтовых переменных, который выглядит примерно так:Как получить случайный элемент из многомерного массива в PHP

$easys = array(
array($easy1min,$easy1max,$easy1enc), 
array($easy2min,$easy2max,$easy2enc), 
array($easy3min,$easy3max,$easy3enc), 
array($easy4min,$easy4max,$easy4enc), 
array($easy5min,$easy5max,$easy5enc), 
array($easy6min,$easy6max,$easy6enc), 
array($easy7min,$easy7max,$easy7enc), 
array($easy8min,$easy8max,$easy8enc), 
array($easy9min,$easy9max,$easy9enc), 
array($easy10min,$easy10max,$easy10enc) 
); 

Я пытающегося вернуть одного рандомизированного результат от этого.

Моя функция пытается перетасовать выглядит следующим образом:

$shuffle($easy_encounters); 
$num = rand($easy_encounters[0][0],$easy_encounters[0][1]); 
return "(".$num.") ".$easy_encounters[0][2]; 

дает

"shuffle expect parameter 1 to be array.."

Я также попытался iterator_to_array:

$easy_encounters = iterator_to_array($easy_encounters); 

который возвращает ошибку

"Catchable fatal error: Argument 1 passed to iterator_to_array() must implement interface Traversable..."

затем пара попытки использовать различный синтаксис для array_rand, таких как:

$easy_encounters = array_rand($easy_encounters); 
$num = rand($easy_encounters [0][0],$easy_encounters [0][1]); 
return "(".$num.") ".$easy_encounters [0][2]; 

и

$random_obj = $easy_encounters[array_rand($easy_encounters)]; 
$num = rand($random_obj[0][0],$random_obj[0][1]); 
return "(".$num.") ".$random_obj[0][2]; 

Я чувствую, что я удар все вокруг этого. Я признаю, что, возможно, не полностью понял использование iterator_to_array после того, как получил эту ошибку Traversable.

Любая помощь приветствуется. Я поплелся вокруг SO, где я получил примеры, которые я использовал таким образом.

+2

Вы назвали свой массив $ easy, но используете его везде, как $ easy_encounters – Orangepill

+0

Возможный дубликат [PHP Parse/Syntax Errors; и как их решить?] (http://stackoverflow.com/questions/18050071/php-parse-syntax-errors-and-how-to-solve-them) –

+0

@Orangepill Извините, я забыл показать, что я назначил массив для сеанса, затем снова выполнить сеанс ... 'code' $ _SESSION [" enc_easy "] = $ easys; $ easy_encounters = $ _SESSION ["enc_easy"]; – Nallware

ответ

1
$randomArray = array_rand($easy_encounters); 
echo $easy_encounters[$randomArray][array_rand($easy_encounters[$randomArray])]; 

Сначала получите случайный массив. Затем получите случайное значение из массива.

$randomArray - это случайный массив внутри $easy_encounters. Таким образом, в нижней строке отображается echo $easy_encounters[$randomArray][$randomElement inside $randomArray].

+0

Дает предупреждение: array_rand() ожидает, что параметр 1 будет массивом, значение null задано – Nallware

+0

Это работает на меня. Обязательно измените имена переменных. – mattslone

+0

Чтобы убедиться, что я понимаю, я беру свой массив (в этом случае он теперь называется $ easy_encounters и рандомизируется в $ randomArray, который затем возвращается обратно в $ easy_encounters? Это то, что мне кажется, как ваш код. – Nallware

1

Во-первых, я не думаю, что вы можете использовать $shuffle(argument) это функция не является переменной, удалите $, второй вы использовали $easys в первой части кода, а затем $easy_encounters перетасовать его. Используйте одно и то же имя переменной в обоих из них.

+0

Это опечатки, повторяющиеся между различными итерациями кода, которые я использовал при решении проблемы. – Nallware

Смежные вопросы