我试图让搜索结果根据搜索中的单词显示不同的结构。
我想要的是捕捉单词 - apple
, plum
, tree
如果这些单词中的一些或全部被搜索到显示 div1 其他 div2。
到目前为止我尝试过的是
$words_array = explode(' ', $_GET['s']);
$words = 'apple plum tree';
if(in_array($words, $words_array)) {
echo 'div1';
} else {
echo 'div2';
}
当我搜索其中一个词或它们的组合时,这不像 return div2
那样起作用。
如果我这样做
$words_array = explode(' ', $_GET['s']);
if(in_array('apple', $words_array)) {
echo 'div1';
} else {
echo 'div2';
}
搜索apple
返回正确结果div1
。
更新:print_r($words_array);
Array ( [0] => apple [1] => and [2] => tree
print_r($words);
Array ( [0] => apples [1] => apple [2] => tree [3] => plum )
最佳答案
in_array()函数要求第一个参数为字符串。
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
您正在将数组作为第一个参数传递。
这就是函数没有返回正确值的原因。 第二个参数是要查找的数组。
使用默认值 FALSE
初始化变量 $divOneFlag
。
请遍历$words
,然后在循环中调用in_array()
。
如果找到单词,将其设置为 TRUE
。
如果变量为TRUE
,echo 'div1';
否则 echo 'div2';
<?php
$words_array = ['apple', 'and', 'tree'];
$words = ['apples', 'apple', 'tree', 'plum'];
$divOneFlag = FALSE;
if (! empty($words)) {
foreach ($words as $word) {
if (in_array($word, $words_array)) {
$divOneFlag = TRUE;
}
}
}
if ($divOneFlag) {
echo 'div1';
}
else {
echo 'div2';
}
关于php - 在 Wordpress 的搜索查询中搜索并匹配一个或多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55743510/