我无法弄清楚如何将可变数量的变量传递给函数.我认为传入一个数组并使用变量名称的数组键可以取代将额外的变量传递给函数的需要,并且它有效(我确信有更好的方法来实现这一点,建议欢迎).但是,我似乎无法从函数内部的数组中取出键.
数组:
$parameters[day] = 1;
$parameters[month] = 8;
$parameters[year] = 2010;
Run Code Online (Sandbox Code Playgroud)
功能内部:
foreach(key($parameters) as $key)
{
print($key);
print("<br>");
}
Run Code Online (Sandbox Code Playgroud)
函数内部的代码返回一个警告:为foreach()提供的参数无效.如何将键拉出阵列?
Gar*_*ett 45
您可以使用PHP的array_keys函数来获取键,如下所示:
foreach(array_keys($parameters) as $paramName)
echo $paramName . "<br>";
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用特殊的数组运行数组foreach
,它允许您为每个元素分隔键和值,如下所示:
foreach($parameters as $paramName => $value)
echo $paramName . "<br>";
Run Code Online (Sandbox Code Playgroud)
此外,请确保使用"string"
(带引号)或整数(如1337
)作为键,如下所示:
$parameters["day"] = 1;
$parameters["month"] = 8;
$parameters["year"] = 2010;
Run Code Online (Sandbox Code Playgroud)
或者如果你想获得更多的爱好者:
$parameters = array(
"day" => 1,
"month" => 8,
"year" => 2010
);
Run Code Online (Sandbox Code Playgroud)
您的代码应如下所示:
$parameters = array(
"day" => 1,
"month" => 8,
"year" => 2010
);
foreach($parameters as $paramName => $paramValue)
echo $paramName . "<br>";
Run Code Online (Sandbox Code Playgroud)
将关联数组传递给函数是传递可变数量参数的合理方法.
foreach ($parameters as $key => $value) {
echo $key . ' = ' . $value . '<br>';
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以传入一个实例stdClass
(将参数强制转换为对象).但阵列完成了这项工作.
我假设您的数组键不是常量,在这种情况下,它们应该是带引号的字符串:
$parameters['day'] = 1;
$parameters['month'] = 8;
$parameters['year'] = 2010;
Run Code Online (Sandbox Code Playgroud)