Табличная форма не показывает все значения, вставленные в текстовое поле, почему?пост-массив не имеет всех значений, почему? - PullRequest
0 голосов
/ 30 января 2019

Проблема в том, что я имею дело с многомерным массивом.Позвольте мне объяснить вам проблему на простом примере: рассмотрим таблицу типа:

<form method="post" id="f">
  <table class="table table-bordered" id="example">
    <tbody>
      <?php for ($a = 0; $a <= 101; $a++) { ?>

           <tr>

          <?php for ($b = 0; $b <= 20; $b++) { ?>

   <td><input type="text" name="columnVal<?php echo $b; ?>[]" value="<?php echo $a . '-' . $b; ?>" /></td>

          <?php } ?>

            </tr>

      <?php } ?>

     </tbody>
   <input type="submit" class="btn btn-primary" value="upload" name="upload" />
    </table>
</form>

В приведенной выше форме есть таблица, в которой tr и td являются динамическими в том смысле, что я использовал php-код для зацикливания входного текста изначение в нем теперь похоже на число столбца тире столбца.Я хочу, чтобы при отправке отображалось значение одного полного столбца в текстовом поле.Таким образом, в скрипте сервера мне потребуется PHP-КОД

if(isset($_POST['upload'])){
   print_r($_POST['columnVal0']);
   exit();
}

, поэтому на выходе должен быть массив со всеми значениями первого столбца, который равен 0-0,1-0,2-0 .... 101-0 верно?но проблема в том, что я получаю половину ценностей.например, 0-0,0-1,0-2 до 45-0.Некоторые Как я чувствую проблему max_input_var, но я не уверен, и если вы думаете, что это действительно такая проблема, пожалуйста, сообщите мне, как ее решить, хотя я использовал ini_set ('max_input_vars', '9999');но это не работа.А также, пожалуйста, сообщите мне, если вы знаете, как назначить массиву размер оперативной памяти или как узнать размер массива (в МБ).Я знаю, что это немного сложная проблема, но я надеюсь, что кто-нибудь получит мой вопрос и поможет мне решить его!Извините за плохой английский!

1 Ответ

0 голосов
/ 30 января 2019

Ваш код работает нормально, я только немного улучшил его для удобства чтения:

HTML-форма:

<form action="test.php" method="post" id="f">
  <table class="table table-bordered" id="example">
      <?php 
        for ($a = 0; $a < 101; $a++) { 
            echo '<tr>';

            for ($b = 0; $b <= 20; $b++) { 
                echo '<td>
                        <input type="text" name="columnVal'.$b.'[]" value="'.$a.'-'.$b.'" />
                      </td>';
            }

            echo '</tr>';

        } 
      ?>
   <input type="submit" class="btn btn-primary" value="upload" name="upload" />
    </table>
</form>

Форма действия:

<?php
    if(isset($_POST['upload'])){
       print_r($_POST['columnVal0']);
       exit();
    }
?>

В качестве первой попытки я получил то же сообщение об ошибке, что и ваше, то есть max_input_var, который был закомментированной директивой в php.ini и установлен на 1000. Пожалуйста, раскомментируйте его и установите нужное вам значение.Таким образом, вы получите полный ожидаемый список столбцов:

Array ( [0] => 0-0 [1] => 1-0 [2] => 2-0 [3] => 3-0 [4] => 4-0 [5] => 5-0 [6] => 6-0 [7] => 7-0 [8] => 8-0 [9] => 9-0 [10] => 10-0 [11] => 11-0 [12] => 12-0 [13] => 13-0 [14] => 14-0 [15] => 15-0 [16] => 16-0 [17] => 17-0 [18] => 18-0 [19] => 19-0 [20] => 20-0 [21] => 21-0 [22] => 22-0 [23] => 23-0 [24] => 24-0 [25] => 25-0 [26] => 26-0 [27] => 27-0 [28] => 28-0 [29] => 29-0 [30] => 30-0 [31] => 31-0 [32] => 32-0 [33] => 33-0 [34] => 34-0 [35] => 35-0 [36] => 36-0 [37] => 37-0 [38] => 38-0 [39] => 39-0 [40] => 40-0 [41] => 41-0 [42] => 42-0 [43] => 43-0 [44] => 44-0 [45] => 45-0 [46] => 46-0 [47] => 47-0 [48] => 48-0 [49] => 49-0 [50] => 50-0 [51] => 51-0 [52] => 52-0 [53] => 53-0 [54] => 54-0 [55] => 55-0 [56] => 56-0 [57] => 57-0 [58] => 58-0 [59] => 59-0 [60] => 60-0 [61] => 61-0 [62] => 62-0 [63] => 63-0 [64] => 64-0 [65] => 65-0 [66] => 66-0 [67] => 67-0 [68] => 68-0 [69] => 69-0 [70] => 70-0 [71] => 71-0 [72] => 72-0 [73] => 73-0 [74] => 74-0 [75] => 75-0 [76] => 76-0 [77] => 77-0 [78] => 78-0 [79] => 79-0 [80] => 80-0 [81] => 81-0 [82] => 82-0 [83] => 83-0 [84] => 84-0 [85] => 85-0 [86] => 86-0 [87] => 87-0 [88] => 88-0 [89] => 89-0 [90] => 90-0 [91] => 91-0 [92] => 92-0 [93] => 93-0 [94] => 94-0 [95] => 95-0 [96] => 96-0 [97] => 97-0 [98] => 98-0 [99] => 99-0 [100] => 100-0 )

Для размера массива в МБ лучшие ответы, которые мне удалось найти, представлены здесь: php get размер данных массива и https://nikic.github.io/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html

...