通过键名称php传递数组?

时间:2016-11-16 15:59:14

标签: php arrays

我正在尝试将已定义键的数组传递给函数参数,但是当我调用该函数时,它会为数组创建自己的一组数字键。如何让它使用相同的键?

<?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);

2 个答案:

答案 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"
]