繁体   English   中英

PHP 数组索引值

[英]PHP Array index value

我有一个简单的问题,需要在通过输入表单选择参考 ID 时获取元素。 我使用以下代码来做到这一点。

$id2=$locationProducts[0]->inventory_update_stock_details_id;

但是这段代码总是只输出第一个元素。 例如,inventory_update_stock_details_id=36、inventory_update_stock_details_id=36、inventory_update_stock_details_id=36 等等。

但我需要像这样选择inventory_update_stock_details_id=35、inventory_update_stock_details_id=345、inventory_update_stock_details_id=2。

inventory_update_stock_details_id 包含的 id 为 1,2,3,4,5,......1000

模型如下:

function getInventoryLocationProducts()
    {
        $this->db->select("*");
        $this->db->from('store_inventory_update_stock_details');
        $this->db->join('store_inventory_item', 'store_inventory_item.inventory_item_id=store_inventory_update_stock_details.inventory','left');
        $this->db->join('store_inventory_location_update', 'store_inventory_location_update.inventory_update_stock_id=store_inventory_update_stock_details.inventory_update_stock_id','left');
        $this->db->join('store_inventory_update_stock', 'store_inventory_update_stock.inventory_update_stock_id=store_inventory_location_update.inventory_update_stock_id','left');
        $this->db->where('store_inventory_item.status=1');
        $this->db->where('store_inventory_update_stock_details.serial_no NOT IN (select serial_no from store_inventory_location_update)');
        
        $q = $this->db->get_where();
        
        if ($q->num_rows() > 0) {
            return $q->result();
        }

        return FALSE;
    }

控制器

public function addInventoryLocation()
{
    $this->checkPermissions('add', 'inventoryLocation');
    $bc = array(array('link' => '#', 'page' => 'Inventory Locations'));
    $meta = array('page_title' => 'Inventory Locations', 'bc' => $bc);
    $this->data['branch'] = $this->Item_model->getBranch();
    $this->data['office'] = $this->Item_model->getOffice();
    $locationProducts = $this->Item_model->getInventoryLocationProducts();
    $this->data['locationProducts'] = $locationProducts;

    $this->data['auto_loc_no'] = $this->Item_model->generate_inv_loc_ref();

    $count = $this->input->post('i');
    
    $str = $this->input->post('auto_loc_no');
    $auto_loc = preg_replace("/[^0-9]{1,4}/", '', $str);
    $this->form_validation->set_rules('branch', 'Branch', 'required');
            
    if ($this->form_validation->run() == true) {
        
        $stock = array(
            
            'office_id' => $this->input->post('office'),
            'branch' => $this->input->post('branch'),
            'l_date' => $this->input->post('l_date'),
            'is_order_no' => $this->input->post('is_order_no'),               
            'loc_no' => $this->input->post('auto_loc_no'),
            'auto_loc_no' => $auto_loc,           
            'user' => ucfirst($this->session->userdata('name')),
            'order_status' => 'locate',
            'status' => 1
        );
        $id = $this->Item_model->addInventoryLocation($stock);
        
                   
    }
    $id2=$locationProducts[0]->inventory_update_stock_details_id;       
    dd($id2);

        if ($this->form_validation->run() == true && $id2 != 0) {
            $count = $this->input->post('i');
            for ($x = 0; $x <= $count; $x++) {
                $details[$x]['inventory_update_stock_id'] = $id2;                    
                $details[$x]['inventory'] = $this->input->post('inventory' . $x);                   
                $details[$x]['serial_no'] = $this->input->post('serial_no' . $x);
                $details[$x]['item_code'] = $this->input->post('item_code' . $x);
                $details[$x]['officer'] = $this->input->post('officer' . $x);
                $details[$x]['qty'] = 1;                    
                $details[$x]['status'] = 1;
                $details[$x]['branch'] = $this->input->post('branch');
            }

        if ($this->Item_model->addInventoryLocationDetails($details)) {
            echo("<meta http-equiv='refresh' content='1'>"); 
            $this->session->set_flashdata('message', 'Successfully Added ..!!');                              
            redirect('item/addInventoryLocation');
        }
    } else {
        
        $this->session->set_flashdata('error', validation_errors());
        $this->render('item/addInventoryLocation', $meta, $this->data);
    }

}

看法

<td style="width: 30%">
                                <input type="hidden" name="i" id="i" value="0">
                                <select name="inventory0" id="inventory0" class="form-control select2 inventory-select" required>
                                    <option value=""></option>
                                    <?php
                                    if (!empty($locationProducts)) {
                                        foreach ($locationProducts as $row) {
                                                echo "<option value='".$row->inventory_update_stock_details_id."'> $row->inventory_update_stock_details_id - $row->inventory_item_name</option>";
                                            ?>
                                            
                                           
                                            <?php
                                        }
                                    }

                                    ?>
                                </select>
                            </td>

什么可以修改我的代码行来做到这一点。 谁能帮我 ?

我不完全确定预期的逻辑是什么,但我认为您想要的是将 InventoryLocationDetails 添加到所有 InventoryLocationProducts。

如果这是正确的,你也许可以做这样的事情:

    if ($this->form_validation->run() == true) {
        $details = [];

        foreach ($locationProducts as $locationProduct) {
            $id2 = $locationProduct->inventory_update_stock_details_id;

            $count = $this->input->post('i');
            for ($x = 0; $x <= $count; $x++) {
                $details[] = [
                    'inventory_update_stock_id' => $id2,
                    'inventory' => $this->input->post('inventory' . $x),
                    'serial_no' => $this->input->post('serial_no' . $x),
                    'item_code' => $this->input->post('item_code' . $x),
                    'officer' => $this->input->post('officer' . $x);
                    'qty' => 1,
                    'status' => 1,
                    'branch' => $this->input->post('branch'),
                ];
            }
        }

        if ($this->Item_model->addInventoryLocationDetails($details)) {
            echo("<meta http-equiv='refresh' content='1'>"); 
            $this->session->set_flashdata('message', 'Successfully Added ..!!');                              
            redirect('item/addInventoryLocation');
        }
    }

这假定$locationProducts仅包含那些实际需要更新的产品。 如果您只需要更新其中的一部分,您可以在foreach循环中添加逻辑来确定要更新的产品。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM