array_ push выполняется только один раз

#php

#php

Вопрос:

Я создал динамические флажки, как показано ниже

 $extList = array(
array("server" => "whois.verisign-grs.net", "extName" => "com"),
array("server" => "whois.verisign-grs.net", "extName" => "com.tr"),
array("server" => "whois.verisign-grs.net", "extName" => "tv"),
array("server" => "whois.verisign-grs.net", "extName" => "net"),
array("server" => "whois.verisign-grs.net", "extName" => "gen.tr"),
array("server" => "whois.verisign-grs.net", "extName" => "de"),
array("server" => "whois.verisign-grs.net", "extName" => "org"),

);


foreach ($extList as $key => $value) {
    ?>
    <span> <input type="checkbox" name="ext[]"
                  value="<?= $value["extName"] ?>"> <?= $value["extName"] 
  

Что я хочу сделать, так это добавить эти значения в массив Я пробовал что-то подобное, но я думаю, что я что-то пропустил, потому что он просто показывает одну запись

     for ($i = 0; $i < count($_POST["ext"]); $i  ) {
        $list = array(
            "extName" => $_POST["ext"][$i],
            "server" => $extList[$i]["server"]

    );
        array_push($extAndServer, $list);
   }
  

Комментарии:

1. Убедитесь, что ваши поля ввода имеют имя ext[] , а не ext .

2. он работает на моей стороне..

3. я выбираю com, com.tr из флажка и получаю этот результат Array ( [0] => Array ( [extName] => com [server] => whois.verisign-grs.net ) [1] => Array ( [extName] => com.tr [server] => whois.verisign-grs.net ))

Ответ №1:

Вам просто нужно объявить свой массив перед использованием array_push() как:

 $extAndServer = array(); // declare your array
  

Я попробовал этот пример:

Ваш массив:

 <?php
$extList = array(
array("server" => "whois.verisign-grs.net", "extName" => "com"),
array("server" => "whois.verisign-grs.net", "extName" => "com.tr"),
array("server" => "whois.verisign-grs.net", "extName" => "tv"),
array("server" => "whois.verisign-grs.net", "extName" => "net"),
array("server" => "whois.verisign-grs.net", "extName" => "gen.tr"),
array("server" => "whois.verisign-grs.net", "extName" => "de"),
array("server" => "whois.verisign-grs.net", "extName" => "org"),
);
?>
  

Форма:

 <form method="post">
<?php
foreach ($extList as $key => $value) {
    ?>
    <span> <input type="checkbox" name="ext[]"
                  value="<?= $value["extName"] ?>"> <?= $value["extName"] ?>
    <?php
}
?>
<input type="submit" name="submit">
</form>
  

Результат:

 <?php
if(count($_POST) > 0){
    $extAndServer = array(); // this line will solve your problem
    for ($i = 0; $i < count($_POST["ext"]); $i  ) {
        $list = array(
            "extName" => $_POST["ext"][$i],
            "server" => $extList[$i]["server"]
        );
        array_push($extAndServer, $list);
    }
    print_r($extAndServer);
}
?>