【问题标题】:Queuing an Array Push using PHP CodeIgniter使用 PHP CodeIgniter 对数组推送进行排队
【发布时间】:2019-09-09 11:17:14
【问题描述】:

我在同时使用 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>

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

【问题讨论】:

  • 控制您的第二个循环组的$total 在哪里?
  • $total 来自 view ,提取自 extract($_POST); , 还有 $id...@NigelRen
  • 会不会是内存问题?有时 PHP 会默默地失败。
  • 这是另一个我不会想到的问题...@JohannesSchidlowski
  • @BaktiWijaya $id$total$CONDITION 在哪里?

标签: php arrays codeigniter


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2016-09-29
    • 2021-01-23
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多