Использование array_rand для выбора массива верхнего уровня и всех его потомков - PullRequest
0 голосов
/ 30 марта 2011

Привет, я немного смущен тем, как я поступаю по этому поводу. Любая помощь будет принята с благодарностью.

У меня есть следующий код.

$worms_level1 = $this->catch_the_worm_model->get_worms_by_level(1);
$captured_worms = array();

for ($i = 0; $i < $num_worms; $i++)
{
    $captured_worms[$i] = array_rand($worms_level1);
}

return $captured_worms;

Многомерный массив $ worms_level1 имеет следующий формат:

Array ( [0] => Array ( [worm_id] => 1 
                       [worm_name] => Verm 
                       [worm_description] => The most common verm, not a huge threat but a great nuisance. 
                       [worm_level] => 1 
                       [worm_value] => 1 ) 

        [1] => Array ( [worm_id] => 2 
                       [worm_name] => Vermichav 
                       [worm_description] => Vermichav loves a scuffle. He's been known to spit in Wormcatcher's eyes and inflict pain by cigarette burns. 
                       [worm_level] => 1 [worm_value] => 1 )
     )

В этот момент код успешно выбирает случайные массивы и сохраняет их в новом массиве, например,

Array ( [0] => 1 [1] => 1 )

но я также хочу сохранить потомки в новом массиве.

1 Ответ

1 голос
/ 30 марта 2011

Как насчет:

$captured_worms=array();
$howmany=20;
do{
    $howmany-=count($captured_worms);//decreases $howmany by the number we already grabbed
    shuffle($multiarray); //reorder the multiarray randomly
    $captured_worms=array_slice($multiarray,0,$howmany);//get as many elements as you want
} while(count($captured_worms)<$howmany); //ensures at least $howmany
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...