我有一个文本框。我输入的格式为12 13 14。 我期待这个结果12,13,14。但错误显示 警告:在第110行的E:\ Xampp \ htdocs \ prize_bond \ admin \ index.php中为foreach()提供的参数无效。
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;
?>
答案 0 :(得分:1)
如果您的表单字段在没有逗号的情况下请求值,那么您需要按空格explode
POST数据。你现在正在做的是用逗号破解它(你不能开始破坏一个字符串),然后尝试将它传递给foreach循环。但是,foreach循环只接受数组。
$ar = explode(' ',$da);
这个简单的改变应该为你解决。您将希望在foreach之后摆脱特殊的die()
(语法无效,并且不清楚您在那里尝试做什么!),并在循环之前验证您的数据。默认情况下,如果你爆炸了一个字符串而没有找到匹配的分隔符,那么结果将是一个带有单个键的数组,你可以将它传递给一个没有问题的循环。
答案 1 :(得分:0)
您确定要让用户以该特定格式输入数据吗?如果用户使用多个空格字符,或者用逗号分隔数字,该怎么办?还是用分号?或输入字母而不是数字?无论如何..至少你可以将所有空格转换为单个空格字符,然后按照建议执行explode():
$da = trim(preg_replace('/\s+/', ' ', $_POST['imp']));
$ar = explode(' ', $da);
在你的foreach()之前。
答案 2 :(得分:-1)
使用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,