用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】:

让我提供一种不同的方法,而不是仅仅治愈症状。

您应该将您的信息存储在表格中。如果某些产品是否隐藏,应该可以让数据库弄清楚。为此,您需要正确规范化您的数据。

显然,您在某处有一张产品表,有些应该隐藏起来。如果这是属于每个产品的属性 truefalse,您可以将其作为新列添加到您的产品表中。

SELECT id FROM products WHERE id = 2 AND hidden = 1

如果 hidden 不是您产品的固有属性,您还可以创建一个简单的产品 ID 列表的帮助表。

一个条目只是说该产品是隐藏的。如果表中没有 ID,则它隐藏。

【讨论】:

以上是关于用PHP检查逗号分隔的字符串中是不是存在值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查逗号分隔列表是不是包含特定数字[重复]

使用 argparse 将逗号分隔的多个整数值作为输入,并检查列表中是不是存在这些值

用于逗号分隔值的PHP'foreach'[重复]

在PHP中将字符串[基本上是逗号分隔的数字]转换为整数的最佳方法[重复]

列中的重复值

如何在 MySQL 的单个列中删除重复的逗号分隔值