【问题标题】: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;

标签: php


【解决方案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,则它隐藏。

        【讨论】:

          猜你喜欢
          • 2014-05-06
          • 1970-01-01
          • 1970-01-01
          • 2018-06-26
          • 2011-11-30
          • 1970-01-01
          • 1970-01-01
          • 2019-12-12
          • 1970-01-01
          相关资源
          最近更新 更多