我希望搜索一个字符串并获取相关值,但在测试函数时,每次搜索单词(Title
或Would
或Post
或Ask
)显示(给)只有一个输出Title,11,11
!!!!怎么能解决它?
// test array
$arr = array('Title,11,11','Would,22,22','Post,55,55','Ask,66,66');
// define search function that you pass an array and a search string to
function search($needle,$haystack){
//loop over each passed in array element
foreach($haystack as $v){
// if there is a match at the first position
if(strpos($needle,$v) == 0)
// return the current array element
return $v;
}
// otherwise retur false if not found
return false;
}
// test the function
echo search("Would",$arr);
答案 0 :(得分:1)
问题在于strpos
。 http://php.net/manual/en/function.strpos.php
干草堆是第一个参数,第二个参数是针。
您还应该进行===
比较以获得0。
// test array
$arr = array('Title,11,11','Would,22,22','Post,55,55','Ask,66,66');
// define search function that you pass an array and a search string to
function search($needle,$haystack){
//loop over each passed in array element
foreach($haystack as $v){
// if there is a match at the first position
if(strpos($v,$needle) === 0)
// return the current array element
return $v;
}
// otherwise retur false if not found
return false;
}
// test the function
echo search("Would",$arr);
答案 1 :(得分:0)
此函数可能返回布尔值FALSE,但也可能返回一个非布尔值,其值为FALSE,例如0或“”。有关更多信息,请阅读有关布尔值的部分。使用===运算符测试此函数的返回值。
答案 2 :(得分:0)
更改此检查:
// if there is a match at the first position
if(strpos($needle,$v) == 0)
// return the current array element
return $v;
到
// if there is a match at the first position
if(strpos($needle,$v) === 0)
return $v;
或
// if there is a match anywhere
if(strpos($needle,$v) !== false)
return $v;
strpos returns false如果找不到字符串,但检查false == 0
为真,因为php将0
视为false
。要防止这种情况发生,您必须使用===
运算符(或!==
,具体取决于您要做的事情。)