首页 > 解决方案 > 使用 PHP CodeIgniter 对数组推送进行排队

问题描述

我在同时使用 2 个数组推送时遇到问题。当我将 10 个元素推入第一个数组,将 20 个元素推入第二个数组时,它运行良好。但是当我在第一个数组上推送 1000 个元素时,第二个数组不会推送。
这是我的代码:

public function save() {
   extract($_POST);

   $first_array  = array();
   $second_array = array();

   // This array contains 1000 elements to push
   foreach($data as $key) {

     $data3 = array(
        'LOCATION_ID'   => $key,
        'TRX_ID'        => $id,
     );
     array_push($first_array,$data3);
   }

   // This array contains 20 data
   for($i = 0; $i < $total ; $i++) {
      $data4 = array(
        'CONDITION' => $CONDITION[$i],
        'TRX_ID'    => $id
      );
      array_push($second_array,$data4);
   }
   $insert_first  = $this->db->insert_batch('LOCATION',$first_array);
   $insert_second = $this->db->insert_batch('CONDITION',$second_array);

   if($insert_first) {
      if($insert_second) {
        $message = array(true,'success');
      } else {
        $message = array(false,'failed');
      }
   } else {
        $message = array(false,'failed');
   }
   echo json_encode($message);
}


 <form method="POST" action="<?php echo base_url()?>admin/transaction/save">

   <div class="form-group">
     <label>Location</label>
     <select name="LOCATION[]" multiple class="form-control">
        <?php foreach($LOC as $key) : ?>
           <option value="<?php echo $key['id_location'] ?>"><?php echo $key['location_name'] ?></option>
        <?php endforeach; ?>
     </select>
   </div>

   <input type="hidden" name="id" value="<?php echo $id; ?>">
   <input type="hidden" name="total" value="<?php echo count($CON); ?>">

   <div>
      <table>
        <thead>
          <tr>
            <th>#</th>
            <th>NAME</th>
            <th>VALUE</th>
          </tr>
        <thead>
        <tbody>
           <?php $no = 1; foreach($CON as $value) : ?>
               <tr>
                 <td><?php echo $no; ?></td>
                 <td><?php echo $value['condition_name'] ?></td>
                 <td><input type="number" name="CONDITION<?php echo $no; ?>"></td>
               </tr>
           <?php $no++ ;endforeach; ?>
        </tbody>
      </table>
   </div>

 </form>

有没有办法让两个数组都排队?我已经尝试移动数组推送的位置。所以第二个数组首先推送,然后是第二个推送的第一个数组。任何形式的帮助都非常感谢,谢谢..

标签: phparrayscodeigniter

解决方案


PHP,因为版本 5.3.9 有一个很好的小功能,它限制默认为 1000 的请求的大小(以输入变量的数量衡量)POST。PHP(以及 codeigniter)忽略高于此的任何内容

如果您需要发布超过 1000 个变量(或认为您将来可能需要这样做),您需要更改变量php.ini的值max_input_vars。就像我说的,默认值是 1000,所以根据你的需要改变它。

即使在 PHP 5.3.9 之后的版本上,您也可能会max_input_vars发现在php.ini. 不要被它不存在的事实误导,因为无论如何它都会默认为 1000。只需创建它:)


推荐阅读