使用implode从数组输出编号列表?

时间:2015-08-22 13:01:10

标签: php arrays implode

我一直在试图解决这个问题几个小时,但作为一个PHP新手,我正在努力绕过它。

我正在尝试将多个(编号)项目传递给Amazon API。我的阵列($ asins)充满了我需要的所有刺痛。

这是我的数组:

$asins = array('STRING_1', 'STRING_2', 'STRING_3');

我需要以下列格式输出:

ASINList.ASIN.1=STRING_1&ASINList.ASIN.2=STRING_2&ASINList.ASIN.3=STRING_3

数组将始终包含25个这样的字符串。

我意识到这可能非常简单,但任何提示都会受到赞赏。我喜欢学习!

3 个答案:

答案 0 :(得分:4)

这段代码应该完成它。 数组键始终从' 0'开始。在你的情况下,你需要' 1'

$array = array('STRING_1', 'STRING_2', 'STRING_3');
$URLparameters = array();

foreach( $array as $key => $value ){
    $newkey = $key + 1;
    $URLparameters[] = "ASINList.ASIN.".$newkey."=".$value;
}

$result = implode("&", $URLparameters);

[EDIT]基于Emiliano Sangoi的想法

$a = array('ASINList.ASIN.1', 'ASINList.ASIN.2', 'ASINList.ASIN.3');
$b = array('STRING_1', 'STRING_2', 'STRING_3');
$c = array_combine($a, $b);

echo http_build_query($c);

答案 1 :(得分:2)

如果你按照以下方式保留你的论点:

$asins = array(
        "ASINList.ASIN.1" => 'STRING_1',
        "ASINList.ASIN.2" => 'STRING_2',
        "ASINList.ASIN.3" => 'STRING_3'
    );

您唯一需要做的是:

echo http_build_query($asins);

答案 2 :(得分:0)

PHP implode用于简单数组(1,2,3 ...),但你的是一个复数数组(f1 = v1,f2 = v2),所以使用for循环来控制字符串的生成方式,例如:

$output = "";

for ($i = 0; $i < count($array); $i++) {

    $output .= "ASINList.ASIN.$i" . "=" . $array[$i] . "&";
}

echo $output;