你应该有某种要检查类别ID数组,例如:
$categories = array(8, 4);
然后,你可以使用类似PHP的in_array(needle, haystack)
内置功能。
如果您的条件会变成这样:if (!in_array($item['single']['catid'], $categories)) {
。
您应该使用上面,但我想给你它是如何工作的想法,所以你可以理解为更复杂的问题的原则:
函数存在($目标,$阵列){ ($ element as $ element){//遍历数组中的每个元素 if($ element == $ target){//检查是否有任何元素存在您正在搜索的内容 return true; //返回true,确实存在,并停在那里。 } else { //只要忽略它... } } return false; //如果你到达这里,这意味着什么都没有返回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...
}
然后你可以使用它如前所示,但请记住,这只是一个例子,你可能甚至不需要所有这些步骤,并有更有效的方式来处理这个输入(常规表达式)。但这里所关心的并不是消毒输入,但请记住,您最终需要这样做。
希望它足够清楚:)
非常感谢您的详细描述和理解。欣赏。我现在正试图理解并回复你。是的,我正在使用窗体(输入字段)来获取ID,所以用户可以添加像'1,5,10,52 .....' –
@pixelngrain不客气:)我更新了答案,检查是否很明显! – jadkik94
伟大的帮助和解释。非常感谢,工作正常。 –