如何获取用逗号“,”分隔的值

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() (语法无效,并且不清楚您要在那里做什么!),并在循环之前验证您的数据。默认情况下,如果您分解一个字符串并且没有找到匹配的分隔符,则结果将是一个具有单个键的数组,您可以毫无问题地将其传递到循环中。

【讨论】:

以上是关于如何获取用逗号“,”分隔的值的主要内容,如果未能解决你的问题,请参考以下文章

获取用逗号分隔的值的计数[重复]

Power BI Advanced编辑器如何获取SelectedRow的文本?

如何根据两个逗号分隔值的列中的任何一个值获取记录

如何获取以逗号分隔的列值

如何在 TextInput 中获取 $ 符号和逗号分隔符?

如何从数组中返回以逗号分隔的值?