如何获取用逗号“,”分隔的值
Posted
技术标签:
【中文标题】如何获取用逗号“,”分隔的值【英文标题】:how to get values with comma ',' separated 【发布时间】:2017-05-11 14:55:44 【问题描述】:我有一个文本框。我以这种格式输入值 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;
?>
【问题讨论】:
无效的 html 结构tr/td
不能是 form
的直接子级。
所以除了 HTML(也许还有 javascript)之外,什么都没有?
Have a read
PHP 代码
【参考方案1】:
使用explode而不是implode as
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,
【讨论】:
【参考方案2】:您确定希望用户以该特定格式输入数据吗?我的意思是,如果用户使用多个空格字符,或者实际上用逗号分隔数字怎么办?还是用分号?或输入字母而不是数字?无论如何..至少您可以将所有空格转换为单个空格字符,然后按照建议执行explode():
$da = trim(preg_replace('/\s+/', ' ', $_POST['imp']));
$ar = explode(' ', $da);
在你的 foreach() 之前。
【讨论】:
【参考方案3】:如果您的表单字段要求输入不带逗号的值,那么您将需要explode
POST 数据按空格。您现在正在做的是用逗号将其内爆(您不能以开头的字符串内爆),然后尝试将其传递到 foreach 循环中。但是,foreach 循环只会接受一个数组。
$ar = explode(' ',$da);
这个简单的更改应该可以为您解决问题。您将希望在 foreach 之后摆脱特殊的 die()
(语法无效,并且不清楚您要在那里做什么!),并在循环之前验证您的数据。默认情况下,如果您分解一个字符串并且没有找到匹配的分隔符,则结果将是一个具有单个键的数组,您可以毫无问题地将其传递到循环中。
【讨论】:
以上是关于如何获取用逗号“,”分隔的值的主要内容,如果未能解决你的问题,请参考以下文章