0
<?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 => amount_3,expense_2 => amount_2,expense_1 =>金额_1]。变量的名称通过 url 成功传递为 amount_1=50、amount_2=50、expense_1=food、expense2=gas 等...以及 $i,我只是不知道如何将这些变量添加到每次排列。现在有了这段代码,我得到了

4 数组 ( [] => ) 数组 ( [] => ) 数组 ( [] => ) 数组 ( [] => )

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

4

2 回答 2

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];
    ...
于 2013-06-08T22:59:21.750 回答
0

或者只是序列化数组并将其传递到下一个站点,在该站点反序列化数组
会容易得多;)

于 2013-06-08T23:03:53.510 回答