打印阵列的按键

2022-08-30 16:20:29

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

数组:

  $parameters[day] = 1;
  $parameters[month] = 8;
  $parameters[year] = 2010; 

函数内部:

foreach(key($parameters) as $key)
{
   print($key);
   print("<br>");
}

函数内的代码重新调整警告:为 foreach() 提供的参数无效。如何将按键从阵列中拉出?


答案 1

您可以使用PHP的array_keys功能来获取密钥,如下所示:

foreach(array_keys($parameters) as $paramName)
  echo $paramName . "<br>";

或者,您可以使用一个特殊值来运行数组,该特殊值允许您分离每个元素的键和值,如下所示:foreach

foreach($parameters as $paramName => $value)
  echo $paramName . "<br>";

另外,请确保您使用(带引号)或整数(如)作为键,如下所示:"string"1337

$parameters["day"] = 1;
$parameters["month"] = 8;
$parameters["year"] = 2010;

或者,如果您想变得更高档:

$parameters = array(
  "day" => 1,
  "month" => 8,
  "year" => 2010
);

您的代码应如下所示:

$parameters = array(
  "day" => 1,
  "month" => 8,
  "year" => 2010
);
foreach($parameters as $paramName => $paramValue)
  echo $paramName . "<br>";

答案 2

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

foreach ($parameters as $key => $value) {
  echo $key . ' = ' . $value . '<br>';
}

或者,您可以传入 (将参数强制转换为对象) 的实例。但是数组可以完成这项工作。stdClass

我假设你的数组键不是常量,在这种情况下,它们应该是带引号的字符串:

$parameters['day'] = 1;
$parameters['month'] = 8;
$parameters['year'] = 2010;