从复选框中获取数组,然后在PHP中生成字符串

从复选框中获取数组,然后在PHP中生成字符串,php,html,arrays,checkbox,Php,Html,Arrays,Checkbox,我的网站上有一个表单,它使用数组提交复选框数据。然后,我尝试使用foreach循环操作该数据,在每个复选框数据中添加“:”,然后我希望将其转换为可以插入数据库的单个字符串 这是我的HTML代码: while($row = $result->fetch_assoc()) { echo '<tr><td><input type="checkbox" name="pluginlist[]" value="'.$row['plugin'].'" /></t

我的网站上有一个表单,它使用数组提交复选框数据。然后,我尝试使用foreach循环操作该数据,在每个复选框数据中添加“:”,然后我希望将其转换为可以插入数据库的单个字符串

这是我的HTML代码:

while($row = $result->fetch_assoc())
{
echo '<tr><td><input type="checkbox" name="pluginlist[]" value="'.$row['plugin'].'" /></td><td> '.$row['plugin'].'</td></tr>';
}
echo$plugins1仅在最后一个复选框数据上回显“:”


我怎样才能将所有复选框数据一次插入数据库?

您可以
序列化数据,我觉得这样更方便

或者你可以试试

$plugins1 = implode(":" , $_POST['pluginlist']);

连接这些值。否则,您将在每次迭代时为
$plugins1
分配一个新值

$plugins1 .= $plugins.':'; // Correct - note the extra dot before the equal sign
而不是:


或者,也可以使用
内爆
将所有数组值连接到单个字符串:

$plugins1 = implode(':', $_POST['pluginlist'])

这就是你想做的吗?我可能不理解你的问题。等号前的点会凝聚,但你可能只想内爆

$plugins1 = '';
if(!empty($_POST['pluginlist'])) {
        foreach($_POST['pluginlist'] as $plugins) {
            $plugins1 .= $plugins.":";
            }
echo $plugins1;
echo "<br />or<br/ >";
$plugins2 = implode ($_POST['pluginlist'], ':');
echo $plugins2;
$plugins1='';
如果(!空($\u POST['pluginlist'])){
foreach($\u POST['pluginlist']作为$plugins){
$plugins1.=$plugins.“:”;
}
echo$plugins1;
回声“

”; $plugins2=内爆($_POST['pluginlist'],':'); echo$plugins2;
应该是$plugins1.=$plugins.:”,换句话说,您没有附加上一个字符串-缺少。=.注意,您可以在不使用循环的情况下使用内爆:$plugins1=内爆(“:”,$\u POST['pluginslist']);嘿,我忘了他们更改了内爆的参数…应该是胶水,然后是数组,但幸运的是,函数为您解决了这个问题。我想在我完成键入之前,答案已经得到了回答。
$plugins1 = implode(':', $_POST['pluginlist'])
$plugins1 = '';
if(!empty($_POST['pluginlist'])) {
        foreach($_POST['pluginlist'] as $plugins) {
            $plugins1 .= $plugins.":";
            }
echo $plugins1;
echo "<br />or<br/ >";
$plugins2 = implode ($_POST['pluginlist'], ':');
echo $plugins2;