用PHP检查逗号分隔的字符串中是不是存在值[重复]
Posted
技术标签:
【中文标题】用PHP检查逗号分隔的字符串中是不是存在值[重复]【英文标题】:Check if value exists in comma separated string with PHP [duplicate]用PHP检查逗号分隔的字符串中是否存在值[重复] 【发布时间】:2012-11-12 09:52:56 【问题描述】:我需要检查我的 id 是否存在于逗号分隔的字符串中。
我的字符串在数据库中保存为"1,2,3,4,10"
。
我试过了
$HiddenProducts = array($sqlvalue);
if (in_array(2, $HiddenProducts))
echo "Available";
else
echo "Not available";
它不工作。请任何解决方案...
【问题讨论】:
要使用逗号分隔值的字符串创建数组,您需要explode()
而不是array()
。
为什么不用你的数据库功能来检查呢?又为什么存储为字符串?
检查一个值是否在 CSV 中的最快方法是:strpos(',' . $list . ',', ',' . $item . ',') !== FALSE;
【参考方案1】:
使用explode()
从一个字符串创建一个字符串部分数组,方法是用某个分隔符(在本例中为逗号)分割它。
$HiddenProducts = explode(',',$sqlvalue);
if (in_array(2, $HiddenProducts))
echo "Available";
else
echo "Not available";
【讨论】:
【参考方案2】:in_array()
实际上是您想要的,但是您创建的数组不正确。
假设$sqlvalue = '1,2,3,4,10'
...
$hiddenProducts = explode(',', $sqlvalue);
那么你可以使用in_array()
。
【讨论】:
【参考方案3】:首先使用explode函数将逗号分隔的字符串转换为数组
$HiddenProducts = explode(',',$sqlvalue);
然后使用 in_array 函数检查
if (in_array(2, $HiddenProducts))
echo "Available";
else
echo "Not available";
【讨论】:
【参考方案4】:让我提供一种不同的方法,而不是仅仅治愈症状。
您应该不将您的信息存储在表格中。如果某些产品是否隐藏,应该可以让数据库弄清楚。为此,您需要正确规范化您的数据。
显然,您在某处有一张产品表,有些应该隐藏起来。如果这是属于每个产品的属性 true
或 false
,您可以将其作为新列添加到您的产品表中。
SELECT id FROM products WHERE id = 2 AND hidden = 1
如果 hidden
不是您产品的固有属性,您还可以创建一个简单的产品 ID 列表的帮助表。
一个条目只是说该产品是隐藏的。如果表中没有 ID,则它不隐藏。
【讨论】:
以上是关于用PHP检查逗号分隔的字符串中是不是存在值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 argparse 将逗号分隔的多个整数值作为输入,并检查列表中是不是存在这些值