Неверные аргументы переданы

У меня есть форма, в которой я пытаюсь объединить значения, переданные в этой области:

<div class='span5' style='margin-left:0px !important;'>
    <label>
        <input type="checkbox" name="arrayValue[]" id="area[0]" value="Sparks"
        style='margin-top:-5px !important;'>Sparks</label>
</div>
<div class='span5' style='margin-left:0px !important;'>
    <label>
        <input type="checkbox" name="arrayValue[]" id="area[1]" value="Stead"
        style='margin-top:-5px !important;'>Stead</label>
</div>
<div class='span5' style='margin-left:0px !important;'>
    <label>
        <input type="checkbox" name="arrayValue[]" id="area[2]" value="North Reno"
        style='margin-top:-5px !important;'>North Reno</label>
</div>

Вот мой PHP, который пытается собрать значения...

$arrayValue = array();
$areas = implode("," , $_POST['arrayValue']);

Я понимаю, что это, вероятно, небрежно, но я не могу понять, почему я получаю ошибку недопустимых аргументов в функции implode.


person Ken    schedule 05.08.2013    source источник
comment
Сделайте print_r из $_POST, он заполнен? Если вы не отметите ни один из флажков, это приведет к ошибке, потому что поле не будет существовать в POST.   -  person Danny    schedule 06.08.2013


Ответы (3)


Ошибка в том, что $_POST['arrayValue'] не существует. Это произойдет, если ни один из флажков не будет отмечен.

В вашей форме отсутствует тег <form> и кнопка отправки. Без этих элементов ничего не получится.

Кроме того, вы объявляете массив $arrayValue = array(); в своем коде. Я не думаю, что это здесь необходимо. Если вы просто пытаетесь получить входные значения и соединить их вместе, вам это не нужно. Поскольку я не уверен, что вы планируете с этим делать, я проигнорировал это в своем ответе.

Я включил рабочую демонстрацию ниже, и это, вероятно, поможет вам начать работу.


Полный код:

<?php
if( isset($_POST['submitButton']) ){
    $areas = implode("," , $_POST['arrayValue']);
    print_r($areas);
}
?>
<form action="" method="post">
<div class='span5' style='margin-left:0px !important;'>
     <label>
         <input type="checkbox" name="arrayValue[]" id="area[0]" value="Sparks" style='margin-top:-5px !important;'> Sparks
     </label>
</div>    

<div class='span5' style='margin-left:0px !important;'>
    <label>
        <input type="checkbox" name="arrayValue[]" id="area[1]" value="Stead" style='margin-top:-5px !important;'> Stead
    </label>
</div>             

<div class='span5' style='margin-left:0px !important;'>
    <label>
        <input type="checkbox" name="arrayValue[]" id="area[2]" value="North Reno" style='margin-top:-5px !important;'> North Reno
    </label>
</div>  
    <input type="submit" name="submitButton"/>

</form>

Вывод:

Sparks,Stead,North Reno

Приведенный выше код использует пустое действие и, таким образом, отправляет сообщение самому себе. Вы захотите изменить это в соответствии с вашими требованиями.

Надеюсь это поможет!

person Amal Murali    schedule 05.08.2013
comment
Я установил флажки, но эти значения все еще не заполняются. Есть идеи, почему? - person Ken; 06.08.2013

implode выдаст предупреждение, если вы не передадите массив.

Я рекомендую проверить значение, как вы ожидаете, используя var_dump:

var_dump($_POST['arrayValue']);
person Kieran    schedule 05.08.2013

implode ожидает, что массив будет передан функции. Что происходит, когда нет $_POST['arrayValue']? Вы должны убедиться, что переменная присутствует:

if(isset($_POST['arrayValue'])){
    $areas = implode("," , $_POST['arrayValue']);
}

Примечание. Я не уверен, где вы планируете реализовать $arrayValue, поэтому в этом ответе он был исключен.

person Samuel Cook    schedule 05.08.2013
comment
У меня есть флажки, но переменная не заполняется... есть идеи, почему? - person Ken; 06.08.2013