检查特定单词是否在数组中

时间:2013-08-17 14:03:47

标签: php

我遇到了一个与检查返回数组的特定匹配相关的问题。

以下是我的工作:

我查询服务器API,API使用以下命令返回可打印的结果:

print_r($result);

打印结果是:

Array
(
    [<html><center>Password_Saved!</center></html>] => 
)

所以我觉得我可以这样做:

function checkResult ($needle, $haystack) {   return ( stripos($haystack,$needle) !== false ? TRUE : FALSE); }

if ((checkResult("saved",$result))) {
echo "saved";
} else {
echo "not saved";
}

然而,这根本不起作用,所以我想知道如果$ result包含保存的字符串,你是否可以帮我找到一种方法,因为我需要知道这根据结果执行下一个动作。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您要查找的值存在于数组的键而不是值中。 因此,您需要在数组的键中进行搜索而不是值。

foreach ($result as $key => $value)
{
   if (false !== stripos ($key, "saved"))
   {
      print "{$key} => Saved";
   }
}

答案 1 :(得分:0)

了解php preg_grep function

例如:

$needle_pattern = '/search/i'; // i for case insensitive
preg_grep($needle_pattern, $array_haystack);

另请注意,在您的代码中,您混合了“已保存”和“已保存”,这些不同:)

有关此方法的进一步阅读:

How to search in an array with preg_match?

P.S如果您的“haystack”实际上是键,您可以使用array_keys($ array_haystack)切换$ array_haystack来获取所有键的数组。

答案 2 :(得分:0)

它不起作用,因为当您在字符串中的值为saved时,您搜索Saved。你应该传递数组密钥。

if ((checkResult("Saved",array_keys($result)[0]))) {
echo "saved";
} else {
echo "not saved";
}