通过键名函数传递数组


Passing array through function with Key names php?

我试图传递一个定义键到函数参数的数组,但是当我调用该函数时,它为数组创建了自己的一组数字键。我怎样才能让它使用相同的键?

<?php
$param = [
"foo" => "bar",
"bar" => "foo",
];
function amazonRequest($AmazonQuery) {
    $url = array();
    foreach ($AmazonQuery as $key => $val) {
    $key = str_replace("%7E", "~", rawurlencode($key));
    $val = str_replace("%7E", "~", rawurlencode($val));
    $url[] = "{$key}={$val}";
    print_r($url);
 }
}
amazonRequest($param);
print_r($param);

您正在给一个空数组自动编号:

$url[] = "{$key}={$val}";

当然会从0开始编号。如果您希望键相同,可以使用$url[$key] = "{$key}={$val}";

当您使用:$array[] = "something"向数组添加新项时,它将添加一个索引键[0 => 'something', ...],始终从0开始。

如果您想添加一个带有关联键(非顺序或字符串)的新项,您需要定义键名:

// Since you get the key in your foreach loop, just add it like this:
$url[$key] = "{$key}={$val}";

新的$url -数组现在看起来应该是:

[
    "foo" => "foo=bar",
    "bar" => "bar=foo"
]