嗨,大家好,我有一些問題,並且讓我感到沮喪。我有一個CakePHP應用程序,我一直在努力,我似乎無法找到一種方式來顯示我想要的方式。導致重複行的兩個PHP foreaches
這是在我的控制器方法的代碼:
function index(){
$this->Order->recursive = 2;
$orders = $this->Order->findAllByVendor_id($this->Auth->User('vendor_id'));
foreach($orders as $order){
$item_ids = explode(',', $order['Order']['items']);
foreach($item_ids as $item_id){
$products = $this->Product->findById($item_id);
$order_products[] = $products['Product']['product_name'];
}
$vendor_orders[] = $order_products;
}
$this->set('orders_products', $vendor_orders);
$this->set('orders', $this->paginate('Order', array('Order.vendor_id' => $this->Auth->User('vendor_id'))));
}
這是我的視圖代碼:
<div class="block" id="vendor-dash">
<table cellpadding="0" cellspacing="0">
<?php
$i = 0;
foreach($orders as $order){
$class = null;
if ($i++ % 2 == 0) {
$class = ' class="altrow"';
}
$pickup_time=date("H:i", strtotime($order['Order']['pickup_time']));
$difference = strtotime('23:52') - date('H:i');
// echo date("H:i", strtotime($difference));
foreach($orders_products as $order_products){
?>
<tr<?php echo $class;?> id="<?php echo $order['Order']['id']; ?>">
<td class="confirmation"><?php echo $order['Order']['confirmation']; ?></td>
<td class="products">
<?php
foreach($order_products as $order_product){
echo $order_product . ', ';
}
?></td>
<td><a href="#" id="<?php echo $order['Order']['id']; ?>" class="action">Fulfill Order</a></td>
</tr>
<?php
}
} ?>
</div>
兩者的foreach($訂單爲$順序)和在foreach($ orders_products如$ order_products)持有多個訂單的信息。 $ orders包含訂單號,取件時間等,而$ orders_products是通過「爆炸」存儲在數據庫字段中的每個訂單的產品ID數組(在上面)創建的陣列數組(例如1, 2,3)。
但是,每當頁面出現時,由於每個訂單運行一次的兩個foreach循環,它會顯示每個訂單三次。所以我沒有三個訂單,每個訂單都有幾個項目,我最終看到了九個訂單。
任何想法?
您是否看到每個訂單的「訂購產品」的預期數量?或者這些的倍數? – jpwco 2011-02-09 21:06:50
是的。正確的訂單數量正在出現,每個訂單都顯示了三次(a,b,c,a,b,c,a,b,c),因爲我有兩個foreach循環。有什麼想法嗎? – user568636 2011-02-09 21:54:24