получение значения массива checkbox из POST
Я размещаю массив флажков. и я не могу заставить его работать. я не включил правильный синтаксис в цикл foreach, чтобы он был простым. но это работает. я тестировал, пытаясь сделать то же самое с текстовым полем вместо флажка, и он работал с текстовым полем.
<form method="post">
<?php 
foreach{
echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
}
?>
</form>
вот та часть, которая не работает. это эхо "пригласить" вместо массива.
<?php
    if(isset($_POST['invite'])){
$invite = $_POST['invite'];
echo $invite;
}
5 ответов
Ваш массив $_POST содержит массив invite, поэтому считывание его как
<?php
if(isset($_POST['invite'])){
  $invite = $_POST['invite'];
  echo $invite;
}
?>
не будет работать, так как это массив. Вы должны пройти через массив, чтобы получить все значения.
<?php
if(isset($_POST['invite'])){
  if (is_array($_POST['invite'])) {
    foreach($_POST['invite'] as $value){
      echo $value;
    }
  } else {
    $value = $_POST['invite'];
    echo $value;
  }
}
?>
Я просто использовал следующий код:
<form method="post">
    <input id="user1" value="user1"  name="invite[]" type="checkbox">
    <input id="user2" value="user2"  name="invite[]" type="checkbox">
    <input type="submit">
</form>
<?php
    if(isset($_POST['invite'])){
        $invite = $_POST['invite'];
        print_r($invite);
    }
?>
когда я установил оба флажка, вывод был:
Array ( [0] => user1 [1] => user2 )
Я знаю, что это не прямо ответить на ваш вопрос, но это дает вам рабочий пример для ссылки и, надеюсь, поможет вам решить проблему.
Проверьте функцию implode () в качестве альтернативы. Это преобразует массив в список. Первый параметр - это то, как вы хотите, чтобы элементы были разделены. Здесь я использовал запятую с пробелом после него.
$invite = implode(', ', $_POST['invite']);
echo $invite;
// if you do the input like this
<input id="'.$userid.'" value="'.$userid.'"  name="invite['.$userid.']" type="checkbox">
// you can access the value directly like this:
$invite = $_POST['invite'][$userid];
потому что <form> элемент находится внутри цикла foreach, вы генерируете несколько форм.  Я предполагаю, что вы хотите несколько флажков в одной форме.
попробуйте это...
<form method="post">
foreach{
<?php echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
?>
}
</form>
