2013-03-15 4 views
0

Я пытаюсь перечислить элементы массива ALL $ _POST с помощью var_dump (или echo), но элементы нулевого значения не отображаются. Если я использую var_dump ($ _ POST) не отображается пустым, но если я использую var_dump ($ _ Post [ "nullitem"]) появляется нуль:php как отображать ВСЕ элементы массива, включая нулевые значения

<html> 
    <head> 
    </head> 
    <body> 
     <?php 
     if ($_POST["submit"]){ 
      var_dump($_POST);   
      foreach ($_POST as $key => $value) { 
       echo $key."=>"; 
       echo $value; 
       echo "  -  "; 
      } 
      echo "<br>"; 
      echo "ck_1 "; var_dump($_POST["ck_1"]); 
      echo "ck_2 "; var_dump($_POST["ck_2"]); 
      echo "ck_3 "; var_dump($_POST["ck_3"]);  
     } 
?> 
    <form action='test.php' method='post' name='form_example' id='test'> 
     <label for='ck_1'> 
     <input type='checkbox' value=1 id='ck_1' name='ck_1' /> 
     1 </label> 
     <label for='ck_2'> 
     <input type='checkbox' value=1 id='ck_2' name='ck_2' checked='checked' /> 
     2 </label> 
     <label for='ck_3'> 
     <input type='checkbox' value=1 id='ck_3' name='ck_3' /> 
     3 </label> 
     <input type='submit' name='submit' value='Submit' /> 
    </form> 
    </body> 
</html> 

Только ck_2 проверяется, поэтому этот пример вывода:

массив 'ck_2' => строка '1' (длина = 1) 'представить' => строка 'Submit' (длина = 6)

ck_2 => 1 - представить => Submit -

ck_1 null ck_2 строка '1' (длина = 1) ck_3 нуля

Как я могу включать в себя все $ _POST значения в цикле Еогеаспа (я не знаю, сколько ключей, ни имена массива $ _POST) Спасибо за помощь С уважением

К сожалению. Флажок не установлен, поэтому не является членом массива $ _POST и не отображается . Способ получения значения для снятого флажка - установить скрытое поле с тем же именем и идентификатором и непроверенным значением (например, 0), так что в послеоперационное время, если бесконтрольно скрыто значение возвращается:

<input type="hidden" name="cx1" value="0" /> 
<input type="checkbox" name="cx1" value="1" /> 

THANK в Midzai

+1

Непроверенное значение флажка не отправляется в сообщении. –

ответ

0

Попробуйте

<html> 
    <head> 
    </head> 
    <body> 
    <?php 
    if ($_POST["submit"]){ 
     echo "<pre>";    
     print_r(array_filter($_POST["ck_1"])); 
     echo "</pre>"; 
    } 
    ?> 
    <form action='test.php' method='post' name='form_example' id='test'> 
    <label for='ck_1'> 
    <input type='checkbox' value=1 id='ck_1' name='ck_1[]' /> 
    1 </label> 
    <label for='ck_2'> 
    <input type='checkbox' value=1 id='ck_2' name='ck_2[]' checked='checked' /> 
    2 </label> 
    <label for='ck_3'> 
    <input type='checkbox' value=1 id='ck_3' name='ck_3[]' /> 
    3 </label> 
    <input type='submit' name='submit' value='Submit' /> 
    </form> 
</body> 
</html> 
0

Я думаю, что вы находитесь в включая все значения массива $ _POST в вашем foreach. Дело в том, что если вы не установите флажок, то $ _POST массив не будет содержать его ключ или его значение.

checkbox Я считаю, что имеет только одно значение, которое отображается, только если вы установите флажок. othervise $ _POST не заполняется ключом. Почему вы видите NULL, когда вы прямо запрашиваете $ _POST с указанным именем ключа (имя установленного флажка, который не был установлен), ключ не существует в массиве $ _POST и возвращает что-то, что возвращает NULL.

Если вы по какой-то неясной причине нужно перечислить все галочки, которые были доступны для chcecked, чтобы пользователь, вы можете добавить

<input type='hidden' name='cbNames[]' value='ck_1'/> 
<input type='hidden' name='cbNames[]' value='ck_2'/> 
<input type='hidden' name='cbNames[]' value='ck_3'/> 

для каждого из флажков на вашем сайте, а затем перечислить через $ _POST ['cbNames'] и запросить $ _POST для тех:

foreach ($_POST['cbNames'] as $cbName) 
    print $_POST[$cbName]; 
Смежные вопросы