2013-06-09 2 views
0

이 코드는 $ vec 배열에서 2-6 피치를 선택합니다. 나는 각각의 피치를 에코 싶습니다하지만 흥미롭게도,이 배열 나에게 피치의 위치의 숫자 값을 제공합니다 (예 : 2 5 6 대신 DFF #)를foreach를 사용하는 php array_rand 함수

$pick = rand(2,6); 
    $vec = array("C","C#","D","D#","E","F","F#","G","G#","A","A#","B"); 
    $random_keys = array_rand($vec,$pick); 
    foreach ($random_keys as $pitch){ 
    echo $pitch; echo "<br>"; 
    } 

은 왜 이 일을하고 어떻게 숫자 대신 피치를 얻을 수 있습니까?

+0

이것은 * 문서화 된 동작입니다. 매뉴얼 페이지의 사용자 노트를 참고하십시오 : http://php.net/array_rand 또한 어레이가 무엇인지 살펴보십시오 : http://php.net/array - * 값 *을 얻을 수 있습니다 * 숫자 * (* 인덱스 */* 키 *). – hakre

답변

3

이 시도 :

반환 값이

당신은 단지 하나의 항목을 따기 경우, array_rand()는 임의의 항목에 대한 키를 반환 :

$pick = rand(2,6); 
$vec = array("C","C#","D","D#","E","F","F#","G","G#","A","A#","B"); 
$random_keys = array_rand($vec, $pick); 
foreach ($random_keys as $key) { 
    echo $vec[$key], '<br />'; 
} 

문서 array_rand()에서 . 그렇지 않은 경우에는 임의 항목에 대한 키 배열을 반환합니다. 배열의 값뿐만 아니라 임의의 키를 선택할 수 있도록이 작업이 수행됩니다.

+0

아 그거야. 감사. '이유': array_rand는 배열의 값 자체가 아닌 * 키 *를 선택합니다. (매뉴얼에서 왜 변수'random_keys'라고 부르는 것입니까?)? –

+0

@ GregoryTippett - :) 그래, 설명서 배열 키를 언급. :디. – Aiias