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