12

我需要检查我的 id 是否存在于逗号分隔的字符串中。

我的字符串保存"1,2,3,4,10"在数据库中。

我努力了

$HiddenProducts = array($sqlvalue);

if (in_array(2, $HiddenProducts)) {
  echo "Available";
} else {
  echo "Not available";
}

它不工作。请问有什么解决办法...

4

4 回答 4

45

用于explode()从字符串创建字符串部分的数组,方法是用特定的分隔符(在本例中为逗号)分割它。

$HiddenProducts = explode(',',$sqlvalue);
if (in_array(2, $HiddenProducts)) {
  echo "Available";
} else {
  echo "Not available";
}
于 2012-11-24T07:08:07.337 回答
3

in_array()实际上是您想要的,但是您错误地创建了数组。

假设$sqlvalue = '1,2,3,4,10'...

$hiddenProducts = explode(',', $sqlvalue);

然后你可以使用in_array().

于 2012-11-24T07:08:27.540 回答
1

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

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

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

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

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

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

于 2012-11-24T12:30:02.423 回答
1

首先使用explode函数将逗号分隔的字符串转换为数组

$HiddenProducts = explode(',',$sqlvalue);

然后使用 in_array 函数检查

 if (in_array(2, $HiddenProducts))
   echo "Available";
else
   echo "Not available";
于 2012-11-24T08:25:20.803 回答