2012-01-10 9 views
0
$youtubes = array("lNT4H39G2rw","pF2_qvdm8DQ","_8ytwhhJwco","K16ZRFWR2Mc","9WuPxe7zc6Q","rXZIIclPnd0","J8ZwyN6E3_Q","OEWJbsh0z-4","o62-X0stdFM","aIIiww2Neq0","5TJc-VbNYg0","MYQa1Tgw_z8","alxzFm-bqug","UmI7oyllrlY","RGKFXDHFmn4"); 

function randomFromArray($data) { 
    global $$data; 
    echo $$data[rand(0,count($youtubes)-1)]; 
} 

randomFromArray("youtubes"); 

이 함수를 함수로 사용하려고하므로 매개 변수로 배열 이름을 입력 할 수 있습니다. 그런 다음 배열에서 임의의 항목을 에코합니다. 비트 배열에서 무작위 항목을 가져옵니다 어디에 직접 그것을 대체 할 경우 자체적으로 작동하지만 그것을 함수로 작동하도록 할 수 없습니다.PHP 함수가 매개 변수와 일치하는 배열을 가져 오는 중

어떤 도움이 필요합니까?

+1

답변

1

은 randomFromArray ("youtubes") 함수를 호출하지 않습니다. 이런 방식으로 문자열처럼 매개 변수가있는 youtubes로 함수를 호출합니다. 그리고 함수 자체 안에는 $ youtubes 변수가 없습니다. 이 randomFromArray ($ youtubes)와 같은 함수를 호출하십시오. 도움이 되길 바란다

1

'youtubes'라는 문자열을 배열이 아닌 함수에 전달하고 있습니다. 당신은 배열의 이름으로 전달하려는 :

randomFromArray($youtubes); 
1
$youtubes = array("lNT4H39G2rw","pF2_qvdm8DQ","_8ytwhhJwco","K16ZRFWR2Mc","9WuPxe7zc6Q","rXZIIclPnd0","J8ZwyN6E3_Q","OEWJbsh0z-4","o62-X0stdFM","aIIiww2Neq0","5TJc-VbNYg0","MYQa1Tgw_z8","alxzFm-bqug","UmI7oyllrlY","RGKFXDHFmn4"); 

function randomFromArray($data) { 
    echo $data[rand(0,count($data)-1)]; 
} 

randomFromArray($youtubes); 
2

당신은 count에 대한 호출에 randomFromArray 함수에서 변수 이름 $youtubes를 사용하고 (하지만 변수가 그 이름을 사용할 수 없습니다) .

Btw., 왜 이름 대신 배열 (참조)을 전달하지 않습니까? 훨씬 더 정돈 된 것 같아요 global $$data; 다음 코드는 배열을 복사 방지 (그러나, 외부 배열이 메서드 내에서 변경 될 수 있음을 기억)에 대한 참조를 사용

$youtubes = // ... 

function randomFromArray(&$data) { 
    echo $data[rand(0,count($data)-1)]; 
} 

randomFromArray($youtubes); 
0

여기에 몇 가지 근본적으로 잘못이 있습니다.

global $$data 왜 이중 $ 기호가 있습니까? 그리고이 데이터는 어디에서 오는 것입니까?

echo $$data[rand(0,count($youtubes)-1)]; 함수 내에서 함수를 정의한 적이 없기 때문에이 함수는 변수 $ youtubes를 알지 못합니다. 함수에 전달되는 변수는 $data입니다.

randomFromArray("youtubes"); 문자열을 함수가 아닌 배열에 전달합니다. 당신은 아마이 대신 원하는 :

randomFromArray($youtubes); // Pointing to your actual array, rather then a string 

먼저 당신이 그들에 대한 기본 지식이 많이 부족하고 그들을 사용하기 전에 PHP functions에 독서보십시오. $f = $$data;을 다음 echo $f[rand(..)]; 당신은 정말 다른 사람이 제안 변수 대신 이름을 사용하려면 : 당신은 global $$data;을 넣어 후

+1

특정 상황에서 그는 사용하고자하는 이름을 사용할 수 있으며, 이는 자신의 지식이 부족함을 의미하지는 않습니다. – khael

+0

사과; 변수가 매개 변수로 사용될 수 있다는 것은 나에게 발생하지 않았습니다. 변수에 아무것도 포함되어 있지 않아서 함수가 'randomFromArray()'라고 생각했을 것입니다. 왜 이렇게되지 않을까요? $ youtubes가 이전에 '2'라고 정의 된 경우 어떻게 되었을까요? 그러면 ' randomFromArray (2) "를 참조하십시오.그래서 randomFromArray ("youtubes")를 사용한 다음 double $를 변수로 변경합니다 (이미 변수 b/c이므로 매개 변수 였으므로). 또한 배열이 함수의 일부가 아니기 때문에 전역을 사용해야하는 이유는 무엇입니까? – Sam

0

, 당신이 시도 할 수 있습니다. 그렇게하면 함수 코드에서 문자열 (또는 $ f)을 더 사용할 수 있습니다.

관련 문제