我在编写此函数时遇到了一些问题。因为它似乎对我不起作用。
它应该做的是:
问题在于,每次没有匹配时,它都会返回'NOT FOUND',所以我得到'NOT FOUND'几次打印。
如果它找到任何东西,它会打印'FOUND'一些因为某些数组元素不匹配,所以也会“发现”几次。
我怎样才能使它成为可能,如果它确实找到一个字符串,它只返回1'FOUND',如果它没有找到任何东西,它只返回1'未找到'。
代码:
function check($hay, $array) {
foreach ($array as $array_element)
if (stripos($hay, $array_element)) {
echo "FOUND";
} else {
echo "NOT FOUND";
}
}
示例输出:
NOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUND
或:
FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUNDNOT FOUND
提前致谢。
答案 0 :(得分:2)
function check($hay, $array) {
foreach ($array as $array_element)
{
if (stripos($hay, $array_element) !== false )
{
echo "FOUND";
return true;
}
}
echo "NOT FOUND";
return false;
}
您正在检查'$ hay'是否包含'$ array_element'。
如果您希望数组元素与搜索相同
if ( $hay == $array_element)
答案 1 :(得分:2)
我的建议是你的函数只负责指出是否找到了单词,以及函数火焰选择如何处理这个结果。
假设您的数组类似于:array("word1", "word2", "word3", "...")
function check($hay, $array) {
foreach ($array as $array_element)
if (stripos($hay, $array_element)!== false) {
return true;
}
}
return false;
}
如果找到该字符串,该函数将停止执行并返回true,否则返回false。
因此,在你调用函数的地方你应该把你的脚本放在哪里表现。
例如:
<?php
function check($hay, $array) {
foreach ($array as $array_element)
if (stripos($hay, $array_element)!== false) {
return true;
}
}
return false;
}
$array = array('word1','word2','word3');
if(check('word1',$array)){
echo "found";
callAnotherFunction;
sendSomething
}else{
echo "not found"
callAnotherFunction;
sendSomething
}
但是,假设您的数组类似于:array("word1", "word2", "word3", "...")
,我将使用以下代码更改功能代码:
function check($hay, $array) {
$isFound = false; // default string is not found
$i = 0; // count
$arrayLength = count($array) //length of your array;
while(!$isFound && $i<arrayLength - 1){
if (stripos($hay, $array_element)!== false) {
$isFound = true;
}
$i++;
}
return $isFound;
}
在我看来,这种方式更简洁,更易于维护。
尝试一下,如果一切正常,请告诉我们。