Codeigintier Loop Through Multidimensional Array获取错误未定义索引:

时间:2013-12-11 20:07:20

标签: php arrays multidimensional-array

我有一个多维数组。

Array
(
[0] => Array
    (
        [OrderID] => 94
        [AccountID] => 1
        [UserID] => 1
        [OrderStatus] => POSTED
        [OrderType] => Buy
        [Subtotal] => 231.91
        [ExchangeFee] => 5.00
        [OrderFee] => 0.00
        [TotalFee] => 5.00
        [GrandTotal] => 226.91
        [Notes] => 
        [DateCreated] => 2013-12-11 10:51:27
        [OrdersDetail] => Array
            (
                [0] => Array
                    (
                        [OrderDetailID] => 96
                        [OrderID] => 94
                        [CurrencyID] => 3
                        [CheckCurrency] => 1
                        [TransTypeID] => 4
                        [Credit] => 300.00
                        [Rate] => 0.773044
                        [Debit] => 231.91
                        [Fee] => 5.00
                        [LineTotal] => 226.91
                        [Description] => Australian Dollar
                        [TransType] => Cash
                    )

            )

    )

)

这是由我的模型中的一个函数创建的。然后我在我的控制器中有以下代码。

$this->Data['OrdersArray'] = $this->orders->getOrdersToday('Buy');

我工作得很好。我想要做的是在我看来使用两个foreach语句来解析多数组中的信息以构建信息列表。这就是我认为的。

<tbody>
<? if(isset($OrdersArray) && $OrdersArray){ ?>
    <?php foreach ($OrdersArray as $key=>$item):?>
    <tr class="<?=alternator('odd','even')?>">
        <td><?=$item['OrderID']?></td>
        <td><?=$item['OrderStatus']?></td>
        <td><?=$item['UserID']?></td>
        <td><?=$item['Subtotal']?></td>
        <td><?=$item['OrderFee']?></td> 
        <td><?=$item['GrandTotal']?></td>                          
    </tr>
    <?php endforeach;?> 
<? } ?>
<? if(isset($OrdersArray) && $OrdersArray){ ?>                          
    <?php foreach ($OrdersArray as $key=>$item):?>
        <tr class="<?=alternator('odd','even')?>">
            <td><?=$item['Description']?></td>
            <td><?=$item['Credit']?></td>
            <td><?=$item['Rate']?></td>                         
        </tr>                                
    <?php endforeach;?>                                                                                   
<? } ?>
</tbody>
</table>

我希望在一行中获取所有这些信息,并且我不断收到未定义的索引:错误。所以我想我的问题是我不明白如何正确编写foreach语句,以便循环遍历所有信息。所有帮助非常感谢。

2 个答案:

答案 0 :(得分:2)

使用相同的foreach无法访问

OrdersDetail 数据。你需要另一个foreach id, OrdersDetail 索引有多个数组。

<tbody>
<? if(isset($OrdersArray) && $OrdersArray){ ?>
<?php foreach ($OrdersArray as $key=>$item):?>
<tr class="<?=alternator('odd','even')?>">
<td><?=$item['OrderID']?></td>
<td><?=$item['OrderStatus']?></td>
<td><?=$item['UserID']?></td>
<td><?=$item['Subtotal']?></td>
<td><?=$item['OrderFee']?></td> 
<td><?=$item['GrandTotal']?></td>                          
</tr>
<? if(isset($item['OrdersDetail'])){ ?>
<?php foreach ($item['OrdersDetail'] as $key2=>$item2):?>
<tr class="<?=alternator('odd','even')?>">
<td><?=$item2['Description']?></td>
<td><?=$item2['Credit']?></td>
<td><?=$item2['Rate']?></td>                         
</tr>                                
<?php endforeach;?>                                                                                   
<? } ?>
<?php endforeach;?> 
<? } ?>
</tbody>
</table>

答案 1 :(得分:0)

您有一系列订单,并且每个订单上都有一个订单详细信息数组,您可以这样做

<? if(isset($OrdersArray) && $OrdersArray){ ?>
<?php foreach ($OrdersArray as $key=>$item):?>
<tr class="<?=alternator('odd','even')?>">
<td><?=$item['OrderID']?></td>
<td><?=$item['OrderStatus']?></td>
<td><?=$item['UserID']?></td>
<td><?=$item['Subtotal']?></td>
<td><?=$item['OrderFee']?></td> 
<td><?=$item['GrandTotal']?></td>
<?php if isset($item['OrdersDetail']){  ?>
<td><table>
<?php foreach($item['OrdersDetail'] as $details){
?><tr>
<td><?=$item['OrderDetailID']?></td>
<td><?=$item['OrderID']?></td>
<td><?=$item['CurrencyID']?></td>
<td><?=$item['CheckCurrency']?></td>
<td><?=$item['TransTypeID']?></td>    
<td><?=$item['Credit']?></td>
<td><?=$item['Rate']?></td>
<td><?=$item['Debit']?></td>
<td><?=$item['LineTotal']?></td>
<td><?=$item['Description']?></td>
<td><?=$item['TransType']?></td>
</tr>
<?php }  ?>
</table>
</td>
<?php } ?>
</tr>
<?php endforeach;?> 
<? } ?>