2013-04-22 2 views
0

У меня есть массив, который связывает mp3 файлы и их соответствующие длины в секундахPHP array_rand() с многомерным массивом

$playlist = array( array("song" => "01.mp3","min" => "91"), 
        array("song" => "02.mp3","min" => "101"), 
        array("song" => "03.mp3","min" => "143"), 
        array("song" => "04.mp3","min" => "143"), 
        array("song" => "05.mp3","min" => "151") 
      ); 

Я вытягиваю песню из плейлиста с array_rand() ...

$song = $playlist[array_rand($playlist)]; 

Потом, позже, я получить доступ к значениям из этого массива ...

echo $song['song']; 

//Then somewhere else... 

echo $song['min']; 

Мой вопрос, каждый раз, когда я запрашиваю $song, будет ли он производить случайный результат или он будет производить случайный результат один раз на загрузку страницы? (т. е. как только $ песня определена, она определена для хорошего.) ... Я надеюсь, что это последняя.

+1

'$ song' присваивается только при создании, он останется тем же самым для оставшейся части этого запроса/времени жизни переменных. – Wrikken

+0

SCORE! Спасибо. – Plummer

+0

$ ценность песни intialize on на загрузке страницы, а не каждый раз –

ответ

1

Мой вопрос в том, что каждый раз, когда я запрашиваю $ song, будет ли он производить случайный результат или он будет производить случайный результат один раз на загрузку страницы?

Нет, не будет. Он будет произвести случайный результат каждый раз, когда вы вызываете функцию array_rand. Если вы вызываете его один раз на загрузку страницы, то да, он будет производить только один случайный результат каждый раз при загрузке страницы.


В общем каждый раз, когда вы доступ переменной вы, скорее всего, не собирается менять его в этой конкретной линии. В частности, упрощая пример (rand выбирает число от минимального до максимального значения, указанных):

$x = rand(0, 9); 

, если число, скажем 7, выбирает то множественный доступ к $x не изменят свое значение. Только явное назначение $x = y (или передача его классу или функции с побочным эффектом на нем), возможно, изменит его значение.

7 Учитывая ковыряться от rand:

echo $x; 
echo $x; 
echo $x; 

напечатает 777.

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