PHP implode(): переданы недопустимые аргументы

У меня есть php-форма с флажком, в котором, если пользователь выбирает «Другое», появляется текстовый ввод. Это работает хорошо, но данные не отправляются. Я получаю сообщение об ошибке PHP implode(): переданы недопустимые аргументы

Вот:

Проверка PHP

if(!isset($_POST['competitor_model'])){   
echo '<p><font color="red" size="+1">• Please select at least one competitor model</font></p>';
} else {
$compmodel = implode(',', $_POST['competitor_model']); 
}

Вот форма JS/HTML

        <script type="text/javascript">
        var temp = '';
        function disableTxt() {
        var field = document.getElementById("other");
        if(field.value != '') {
        temp = field.value;
        }
        field.style.display = "none";
        field.value = '';
        }
        function enableTxt() {
        document.getElementById("other").style.display = "inline";
        document.getElementById("other").value = temp;
        }
        </script>         


        <input type="checkbox" value="BMW 3-series" onchange="disableTxt()"  name='competitor_model[]'>BMW 3-series<br>
        <input type="checkbox" value="Mercedes Benz C-class" onchange="disableTxt()"  name='competitor_model[]'>Mercedes Benz C-class<br>
        <input type="checkbox" value="Lexus IS" onchange="disableTxt()"  name='competitor_model[]'>Lexus IS<br>
        <input type="checkbox" value="Audi A4" onchange="disableTxt()" name='competitor_model[]'>Audi A4<br>
        <input type="checkbox" value="Other"  onchange="enableTxt(Number)" name='competitor_model[]'>Other <em>If yes please submit model</em>
        <input type="text" name="competitor_model[]" id="other" style="display:none;" value="<?php if (isset($_POST['competitor_model'])) echo $_POST['competitor_model']; ?>"/>

person AdamMc    schedule 09.11.2015    source источник
comment
Вы не должны использовать competitor_model[] для ввода текста. Кроме того, тег <font> устарел уже много лет. Вместо этого используйте CSS. Наконец, вы должны хотя бы проверить is_array() в PHP, прежде чем использовать implode()   -  person Raptor    schedule 09.11.2015
comment
$_POST['competitor_model'] должен быть массивом. Попробуйте var_dump($_POST['competitor_model']) и подтвердите?   -  person camelCase    schedule 09.11.2015


Ответы (3)


$_POST['competitor_model'] - это массив. Попробуйте это:

if (is_array($_POST['competitor_model']))
        {
        $compmodel = implode(",", $_POST['competitor_model']);
        }

или попробуй так-

echo implode(', ', (array)$_POST['competitor_model']);

PHP implode()

person Sanjuktha    schedule 09.11.2015
comment
Проблема в другом. - person Raptor; 09.11.2015
comment
Вы можете просто var_dump посмотреть, получены ли значения? - person Sanjuktha; 09.11.2015
comment
может быть потому, что $_POST['competitor_model'] не является массивом - person Sanjuktha; 09.11.2015
comment
@ Raptor-да, я не заметил, что это текст, вы правы, текст мы не инициализируем как массив. - person Sanjuktha; 09.11.2015

Я столкнулся с той же проблемой, и вот что сработало для меня в Laravel:

$contributes = $request->your_contribute;
$each_contribute = implode(',', (array)$contributes);
person Zymawy    schedule 11.10.2017

Сообщение об ошибке: implode(): Неверные аргументы переданы в C:\xampp\htdocs\test_01\index.php в строке 70

Ответ: Этот тип сообщения об ошибке возникает, когда функция implode не получает ни одного массива со строкой для сжатия.

person nazrul islam    schedule 14.05.2018