我正在尝试将已定义键的数组传递给函数参数,但是当我调用该函数时,它会为数组创建自己的一组数字键。如何让它使用相同的键?
<?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);
答案 0 :(得分:1)
您正在自动编号一个空数组:
$url[] = "{$key}={$val}";
当然它将从0开始编号。
如果您希望密钥相同,可以使用$url[$key] = "{$key}={$val}";
。
答案 1 :(得分:1)
使用以下内容向$array[] = "something"
添加新项目时,它会添加一个始终从0开始的索引键[0 => 'something', ...]
。
如果要添加带关联键(非序列号或字符串)的新项,则需要定义键名:
// 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"
]