I could not figure out how to pass a variable number of variables into a function. I thought passing in an array and using the array keys for the variables names could repla
If you want just to output keys, you can do this without cycles:
$parameters = ["day" => 1, "month" => 8, "year" => 2010];
echo implode('<BR>', array_keys($parameters));
Or output keys with values:
$parameters = ["day" => 1, "month" => 8, "year" => 2010];
echo implode('<BR>', array_map(function($v, $k){ return $k.'='.$v;}, $parameters, array_keys($parameters)));
I'm sure there is a better way to accomplish this, suggestions welcome
Because you asked for alternate suggestions, here's one. You can use varargs to pass a variable number of arguments to a function. Here's an example:
function my_function() {
$numArgs = func_num_args();
$args = func_get_args(); // an array of the arguments, in order
}
This doesn't offer you "named" arguments, but it does allow you variable numbers of arguments (like you claim you're trying to do in your question).
Here are some relevant documentation pages:
However, that's not to say that your array-based approach is a bad one. In some ways it provides batter readability since you're explicitly mapping keys to values; maintainers reading your code will be better-able to understand what's being passed to the function. I'm just giving you some options.
try this
foreach($parameters as $key => $value)
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
?>
The array_keys function will return an array of all the array keys.
You can use PHP's array_keys function to grab the keys, like so:
foreach(array_keys($parameters) as $paramName)
echo $paramName . "<br>";
Or, you can run through the array using a special foreach
which allows you to separate the key and value for every element, like so:
foreach($parameters as $paramName => $value)
echo $paramName . "<br>";
Also, make sure that you are using a "string"
(with quotes) or integer (like 1337
) as your key, like so:
$parameters["day"] = 1;
$parameters["month"] = 8;
$parameters["year"] = 2010;
OR if you want to get fancier:
$parameters = array(
"day" => 1,
"month" => 8,
"year" => 2010
);
Your code should look like:
$parameters = array(
"day" => 1,
"month" => 8,
"year" => 2010
);
foreach($parameters as $paramName => $paramValue)
echo $paramName . "<br>";