您应该有某种类型的要检查的类别 ID 数组,例如:
$categories = array(8, 4);
然后你可以使用类似in_array(needle, haystack) PHP 的内置函数。
你的 if 条件会变成这样:if (!in_array($item['single']['catid'], $categories)) {。
您应该使用上述方法,但我将让您了解它的工作原理,以便您了解更复杂问题的原理:
函数存在($target, $array) {
foreach ($array as $element) { // 遍历数组中的每个元素
if ($element == $target) { // 检查是否有任何元素存在您要搜索的内容
返回真; // 返回真,它确实存在,并停在那里。
} 别的 {
// 忽略它...
}
}
返回假; // 如果你到了这里,就意味着什么都没有返回 true,所以它不存在...
}
用作if (exists($item['single']['catid'], $categories)) {。
如果它位于 if 语句的“内部”,它将无法工作,因为您必须在评估它是否存在之前进行一些处理。因此,您可以在 if 语句之前完成此操作,并将结果存储在变量中,或者使用函数(PHP 提供)。
希望这个概念能帮助您解决更复杂的问题...
注意:这假设您的输入是数组的形式,如果没有直接提供,您可以通过各种方式构建它。
更新:
您通过输入字段获得的输入通过表单发送,您可以指定 POST 或 GET 作为方法。假设您使用的是 POST,这就是您将输入 作为字符串 在文本字段中输入的方式:
$categories_string = $_POST['the_name_field_in_the_input_tag'];
之后您必须将其理解为项目列表,假设用逗号分隔:1,3,5,8。然后这只是用逗号分隔。您可以使用explode($delimiter, $string)。像这样:
$categories_array = explode(',', $_POST['categories']);
但是你不能相信输入,所以你可以得到类似1, 2, 3,5,6的东西。空间会把它搞砸,因为你周围都会有空间。例如,要删除它们,您可以使用trim。
$categories = array(); // Create the array in which the processed input will go
foreach ($categories_array as $c) { // Go through the unprocessed one
$categories[] = trim($c) * 1; // Process it, and fill the result. The times one is just so that you get numbers in the end and not strings...
}
然后您可以按照前面所示使用它,但请记住,这只是一个示例,您甚至可能不需要所有这些步骤,并且有更有效的方法来处理此输入(例如正则表达式) .但这里关心的不是清理输入,而是请记住,您最终需要这样做。
希望它足够清楚:)