如何用逗号分隔值,'
问题描述:
我有一个文本框。我输入这个格式的值12 13 14. ,我期望这个结果12,13,14。但误差显示 警告:在E中的foreach()提供参数无效:\ XAMPP \ htdocs中\ prize_bond \管理员\上线的index.php 110如何用逗号分隔值,'
HTML代码
<form action="index.php" method="post">
<tr><td>Enter separated Values With out Comma ","</td>
<td><input name="imp" type="text" /></td></tr>
</form>
PHP代码
<?php
$da=$_POST['imp'];
$ar = implode(',',$da);
foreach($ar as $k) die("not in the loop");
{
$q="insert into pb_100_fp (draw_3_fp) values ('".mysqli_real_escape_string($conn, $k)."')";
$rs=mysqli_query($conn, $q);
echo "$k";
}
exit;
?>
答
如果你的表单字段请求没有逗号的值,那么你将受到空间需要explode
POST数据。你现在正在做的是用逗号(它不能以字符串开始)破解,然后试图将它传递给foreach循环。但是,foreach循环只会接受一个数组。
$ar = explode(' ',$da);
这个简单的改变应该为你解决它。在你的foreach(无效的语法,并且不清楚你想要做什么!)之后,你会希望摆脱特殊的die()
,并且在循环之前验证你的数据。默认情况下,如果你爆炸一个字符串并且没有找到匹配的分隔符,结果将会是一个只有一个键的数组,你可以传入一个没有问题的循环。
答
您确定希望用户输入特定格式的数据吗?我的意思是,如果用户使用多个空格字符,或者用逗号分隔数字呢?或用分号?或者输入字母而不是数字?无论如何..至少你可以改变所有的空格一个空格字符,然后进行爆炸()的建议:你的foreach之前
$da = trim(preg_replace('/\s+/', ' ', $_POST['imp']));
$ar = explode(' ', $da);
()。
答
使用explode而不是implode作为
explode()函数将字符串分解为数组。
implode()函数从数组的元素中返回一个字符串。
并且您不能对字符串执行foreach操作。
$da=$_POST['imp'];
$ar = explode(' ',$da);
foreach($ar as $k)
{
$q="insert into pb_100_fp (draw_3_fp) values ('".mysqli_real_escape_string($conn, $k)."')";
$rs=mysqli_query($conn, $q);
echo $k.",";
}
那么你会得到这个输出
o/p : 12,13,14,
无效的HTML结构'TR/td'不能form'的'直接孩子。 –
因此与HTML(也许是JavaScript)以外的其他东西没有关系? – Strawberry
[已阅读](https://www.codeproject.com/Articles/775/HTML-For-Beginners) –