如何将通过URL传递的变量添加到数组?

时间:2013-06-08 22:51:51

标签: php arrays variables

<?php
$i = $_GET['i'];
echo $i;
$values = array();

while ($i > 0)
{

$expense = $_GET['expense_' + i];
$amount = $_GET['amount_' + i];

$values[$expense] = $amount;
i--;

print_r($values);

}
?>

i表示我从上一页传递的变量集数。我正在尝试做的是将费用添加到金额中并将它们放入数组中(我只想说这个例子有3个费用和3个金额)[expense_3 =&gt; amount_3,expense_2 =&gt; amount_2,expense_1 =&gt; amount_1。变量的名称通过url成功传递,其中amount_1 = 50,amount_2 = 50,expense_1 = food,expense2 = gas等...以及$ i,我只是不知道如何将这些变量添加到数组每次。 现在有了这个代码,我得到了

4 Array([] =&gt;)Array([] =&gt;)Array([] =&gt;)Array([] =&gt;)

如果我不够清楚,我很抱歉,但我对PHP很缺乏经验。

2 个答案:

答案 0 :(得分:0)

您获得的语法错误是因为您使用i代替$i - 但是 - 可以轻松解决。

您要做的是“简单”,可以使用字符串连接来完成。看起来您正在尝试使用$_GET['expense'] + i,但不太正确。

要正确构建参数名称,您需要$_GET['expense_' . $i]之类的内容,在这里您可以看到连接使用.运算符的字符串 - 而不是+运算符。

我将切换你的逻辑,使用for循环而不是while循环作为我的例子:

$values = array();
for ($i = $_GET['i']; $i > 0; $i--) {
    $expense = $_GET['expense_' . $i];
    $amount = $_GET['amount_' . $i];

    $values[$expense] = $amount;
}

print_r($values);

这是遵循原始逻辑,但它将有效地反转变量(从$i向下计数到1)。如果您想要计数,可以将for循环更改为:

$numVariables = $_GET['i'];
for ($index = 1; $index <= $numVariables; $index++) {
    $expense = $_GET['expense_' . $index];
    ...

答案 1 :(得分:0)

或只是serialize数组并将其传递到下一个网站,您unserialize数组 会容易得多;)