打印阵列的键

JMC*_*JMC 21 php arrays

我无法弄清楚如何将可变数量的变量传递给函数.我认为传入一个数组并使用变量名称的数组键可以取代将额外的变量传递给函数的需要,并且它有效(我确信有更好的方法来实现这一点,建议欢迎).但是,我似乎无法从函数内部的数组中取出键.

数组:

  $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)

  • 好的彻底的示例代码.我最终使用它来解决问题.代码块中有一些拼写错误,您可能希望编辑以后偶然发现的任何人.(例如:我认为$ key应该是第一个块中的$ param.我认为"<br>在第二个块中应该是$ value.并且$参数在最后一个块中拼写错误."感谢您将它们组合在一起. (2认同)

MrW*_*ite 6

将关联数组传递给函数是传递可变数量参数的合理方法.

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)