Php 打印数组的键

Php 打印数组的键,php,arrays,Php,Arrays,我不知道如何将数量可变的变量传递到函数中。我认为传入一个数组并使用数组键作为变量名可以取代向函数中传递额外变量的需要,并且它起到了作用(我相信有更好的方法来实现这一点,欢迎您的建议)。但是,我似乎无法从函数中的数组中取出键 阵列: $parameters[day] = 1; $parameters[month] = 8; $parameters[year] = 2010; 在函数内部: foreach(key($parameters) as $key) { print($k

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

阵列:

  $parameters[day] = 1;
  $parameters[month] = 8;
  $parameters[year] = 2010; 
在函数内部:

foreach(key($parameters) as $key)
{
   print($key);
   print("<br>");
}
foreach(key($parameters)作为$key)
{
打印($key);
打印(
); }

函数内的代码返回警告:为foreach()提供的参数无效。如何将键从数组中拉出?

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

foreach ($parameters as $key => $value) {
  echo $key . ' = ' . $value . '<br>';
}
该函数将返回所有数组键的数组。

您可以使用PHP函数获取键,如下所示:

foreach(array_keys($parameters) as $paramName)
  echo $paramName . "<br>";
foreach($parameters as $paramName => $value)
  echo $paramName . "<br>";
$parameters["day"] = 1;
$parameters["month"] = 8;
$parameters["year"] = 2010;
另外,请确保使用
“字符串”
(带引号)或整数(如
1337
)作为键,如下所示:

foreach(array_keys($parameters) as $paramName)
  echo $paramName . "<br>";
foreach($parameters as $paramName => $value)
  echo $paramName . "<br>";
$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>";
$parameters=数组(
“日”=>1,
“月”=>8,
“年份”=>2010年
);
foreach($paramName=>$paramValue的参数)
echo$paramName。“
”;
foreach(数组_键($parameters)作为$key){
回显$key.“
”; }
试试这个

foreach($parameters as $key => $value)
我相信有更好的方法 做到这一点,欢迎提出建议

因为你要求其他的建议,这里有一个。可以使用varargs向函数传递数量可变的参数。下面是一个例子:

function my_function() {
    $numArgs = func_num_args();
    $args = func_get_args(); // an array of the arguments, in order
}
这并不提供“命名”参数,但它允许您使用不同数量的参数(就像您在问题中所说的那样)

以下是一些相关的文档页面:

然而,这并不是说基于阵列的方法是一种糟糕的方法。在某些方面,它提供了更好的可读性,因为您显式地将键映射到值;阅读代码的维护人员将能够更好地理解传递给函数的内容。我只是给你一些选择。


<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
?>

如果您只想输出按键,您可以无需循环即可完成此操作:

$parameters = ["day" => 1, "month" => 8, "year" => 2010];
echo  implode('<BR>', array_keys($parameters));
$parameters=[“日”=>1,“月”=>8,“年”=>2010];
回波内爆(“
”,数组_键($parameters));
或输出具有以下值的键:

$parameters = ["day" => 1, "month" => 8, "year" => 2010];
echo implode('<BR>', array_map(function($v, $k){ return $k.'='.$v;}, $parameters, array_keys($parameters)));
$parameters=[“日”=>1,“月”=>8,“年”=>2010];
回波内爆(“
”,数组_映射(函数($v,$k){return$k.='.$v;},$parameters,数组_键($parameters));
使用$parameters[“day”]=1;(注意引号);读一读,看看为什么。我在想PHP是否有类似Java的vararg实现:)好的完整示例代码。最后我用这个来解决问题。代码块中有一些输入错误,您可能希望为以后偶然发现的任何人进行编辑。(示例:我认为$key应该是第一个块中的$param。我认为“
应该是第二个块中的$value。而$parameters在最后一个块中拼写错误。)谢谢你把这些放在一起。谢谢。我不确定你是想打印这些值还是想用它们做些别的事情,但我已经做了更正。没问题=)+1-第一块中的代码帮助我消除了我在接受答案时因打字错误而产生的困惑。也谢谢你对使用这种方法的可接受性发表评论r将变量传递给函数。您可能还希望借助@Rob上面提到的
func\u get\u args()
函数进行读取。但是,关联数组方法(就像您正在做的那样)更好。