我遇到了一个与检查返回数组的特定匹配相关的问题。
以下是我的工作:
我查询服务器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包含保存的字符串,你是否可以帮我找到一种方法,因为我需要知道这根据结果执行下一个动作。
非常感谢您的帮助。
答案 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";
}