2012-01-10 34 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

请澄清一下:你是否在问'Parse error:syntax error,unexpected T_ECHO,expected','或';''你当前的代码触发错误? – 2012-01-10 12:50:17

回答

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使用变量名$youtubesrandomFromArray功能(但在该名称的变量不可有) 。

顺便说一句,你为什么不传入(引用)数组而不是名称?会比使用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读了。

+1

在某些情况下,你可以使用他想使用的名字,这并不意味着他的知识缺乏。 – khael 2012-01-10 12:49:18

+0

道歉;我没有想到变量可以用作参数。为什么不是这样?如果$ youtubes的确发生了以前定义为'2'的情况,那么它会以''的形式传递, randomFromArray(2)”。这就是为什么我使用randomFromArray(“youtubes”),然后双$将它变成一个变量(因为它已经是一个变量B/C它是一个参数)。另外,为什么我不必使用全局的数组不是功能的一部分? – Sam 2012-01-10 12:59:46

0

global $$data后把;后,你可以试试这个:$f = $$data;然后echo $f[rand(..)];如果你真的想使用的名称,而不是变量作为其他建议。如果你这样做,你可以在函数代码中进一步使用字符串(或$ f)。