数组多维错误PHP

时间:2015-05-07 07:08:50

标签: php arrays

<?php 
   $ctr = 0;
   foreach($rows as $row){
?>
   <input type="hidden" name="client<?php echo $ctr; ?>['client_id']" value="<?php echo $row['client_id']; ?>">
   <input type="hidden" name="client<?php echo $ctr; ?>['transaction_id']" value="<?php echo $row['id']; ?>"> 
   <input style="max-width: 100px;min-width:100px;" class="form-control right" type="text" name="client<?php echo $ctr;?>['amount']" value="" />
<?php 
    }
?>

更新:我已经包含了$ _POST来自的表格。

这是print_r ($_POST);的输出:

Array
(
    [client0] => Array
        (
            ['client_id'] => 1
            ['transaction_id'] => 1
            ['amount'] => 1000
            ['mode'] => cash
        )

    [client1] => Array
        (
            ['client_id'] => 2
            ['transaction_id'] => 5
            ['amount'] => 600
            ['mode'] => cash
        )

    [client2] => Array
        (
            ['client_id'] => 3
            ['transaction_id'] => 6
            ['amount'] => 200
            ['mode'] => cash
        )

    [save] => 
)

当我尝试写这篇文章时:echo $_POST['client0']['amount'];

我期待输出1000

但它给我一个错误:Notice: Undefined index: amount

所以你们可以告诉我我的代码有什么问题.TIA

4 个答案:

答案 0 :(得分:1)

仔细比较print_r输出。一个键为client0,而下一个键为'amount'。那是因为您的密钥实际上是'amount',而不是amount。因为您在HTML中包含了不必要的引号。修复HTML,使输入名称变为:

name="client0[amount]"

(或者将密钥称为$_POST['client0']["'amount'"]。)

当你在这里时,你可能想要将你的字段重命名为:

name="clients[0][amount]"

因为那时你可以使用:

简单地遍历数据
foreach ($_POST['clients'] as $client) {
    echo $client['id'], $client['amount'], ..;
}

更具可读性和理智。

答案 1 :(得分:0)

你应该使用

echo $_POST['client0']['amount'];

答案 2 :(得分:0)

您正在使用错误的变量amount_id只是检查出变量为“amount”的数组,所以更改变量名称如下文

echo $_POST['client0']['amount'];

我希望这会对你有所帮助。

答案 3 :(得分:0)

试试这种方式..

foreach ($_POST['client0'] as $val) {
        echo $val['amount'] ;
    }