0

我遇到了一些与检查返回的数组以查找特定匹配项有关的问题。

这是我所做的:

我查询服务器 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 包含保存的字符串,您是否可以帮助我找到一种方法,因为我需要知道这一点才能根据结果执行下一个操作。

您的帮助将不胜感激。

4

3 回答 3

2

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

foreach ($result as $key => $value)
{
   if (false !== stripos ($key, "saved"))
   {
      print "{$key} => Saved";
   }
}
于 2013-08-17T14:13:26.390 回答
0

阅读有关 php preg_grep 函数的信息

例如:

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

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

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

如何使用 preg_match 在数组中搜索?

PS如果您的“干草堆”实际上是键,则可以将 $array_haystack 与array_keys ($array_haystack) 切换以获取所有键的数组。

于 2013-08-17T14:06:45.200 回答
0

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

if ((checkResult("Saved",array_keys($result)[0]))) {
echo "saved";
} else {
echo "not saved";
}
于 2013-08-17T14:10:04.233 回答