从数组中获取数据到表

时间:2017-06-06 08:03:38

标签: php arrays codeigniter

我是编程和编码的新手,

我传递一个数组来从控制器查看,当我使用print_r函数时,我可以在视图中查看数组数据 但是我希望它们在表格中显示但是会出现错误"消息:未定义索引:pid ....."

我的代码如下:

控制器:

public function bill_data()
{
    $data['data2'] = array(
        'pid' => $this->input->post('pid[]'),
        'proname' => $this->input->post('proname[]'),
        'uprice' => $this->input->post('uprice[]'),
        'qty' => $this->input->post('qty[]'),
        'total' => $this->input->post('total[]'),
        'discount' => $this->input->post('discount'),
        'subtotal' => $this->input->post('subtotal'),
    );

    foreach ($data as $entry) {

        $discount = $entry['discount'];
        $subtotal = $entry['subtotal'];
        $pid = $entry['pid'];
        $proname = $entry['proname'];
        $uprice = $entry['uprice'];
        $qty = $entry['qty'];
        $total = $entry['total'];


    }

    $subtotal = $subtotal - $discount;
    $d['final_result'] = compact("pid", "proname", "uprice", "qty", "total", "discount", "subtotal");

    $this->load->view("invoice", $d);

}

我的观点如下:

<?php foreach ($final_result as $row) { ?>
<table class="table m-t-30">
   <thead class="bg-faded">
      <tr>
         <th>#</th>
         <th>Product Name</th>
         <th>Unit Price</th>
         <th>Quantity</th>
         <th>Total</th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td><?php echo $row['pid']; ?></td>
         <td>dsfdfsdf</td>
         <td>upprice</td>
         <td>qty</td>
         <td>Total</td>
      </tr>
   </tbody>
</table>

为什么它会给我一个错误?如果我在视图中使用print_r,我可以在视图中完美地看到数据

结果:

print_r result and error is with this image

2 个答案:

答案 0 :(得分:0)

首先print_r你的$ row变量然后检查哪些索引来了并确认pid索引是否存在

答案 1 :(得分:0)

这是因为你正在使用foreach。你的&#34; pid&#34;是一个顶级的关键。如果你预先设置了结果数组,那么$ row将是单个值而不是另一个数组。

这里有2个选项:

1)删除视图中的foreach迭代器

2)将结果包装在数组中:

$d['final_result'][] = compact("pid", "proname", "uprice", "qty", "total", "discount", "subtotal");

您需要的选项取决于您是拥有更多数据集还是只有一个数据集,如果它只有一个,那么只需删除视图中的foreach。

另请注意,<?php echo $row['pid']; ?>无法正常使用,因为您需要{p}&#39;是一个数组。