我正在尝试检查来自解码的json响应的foreach循环中是否存在值,并将其与我自己的字符串进行比较。如果$ key_info ['registered_domain']数组中存在$ domain_to_check值,我需要将$ response_array ['status']设置为“Allowed”。我试图使用in_array php函数来检查值是否存在,但是我没有成功,并且即使值在数组内部,我也会继续回复“Not Allowed - Domain not listed”响应。我认为问题出在我的foreach循环中,但是为了我,我无法弄清楚什么是错的。
$domain_to_check = 'domain-name.com';
$data = json_decode($returnCheckValue,true);
$key_response = $data['result'];
if ($key_response == 'success'){
foreach ($data['registered_domains'] as $key_domain_info) {
$key_listed_domain = $key_domain_info['registered_domain'];
if ($key_response == 'success' && in_array($domain_to_check, $key_listed_domain)) {
$response_array['status'] = 'Allowed';
}
else {
$response_array['status'] = 'Not Allowed - Domain not listed';
}
}
}
else {
$response_array['status'] = 'Not Allowed - Wrong Key';
}
echo json_encode($response_array);
这是我的var_dump(); $ data的数据看起来像
array(9) { ["result"]=> string(7) "success" ["max_allowed_domains"]=> string(1) "3" ["registered_domains"]=> array(2) { [0]=> array(5) { ["id"]=> string(2) "60" ["lic_key_id"]=> string(2) "51" ["lic_key"]=> string(13) "93248cqkdj21as" ["registered_domain"]=> string(19) "domain-name-2.com" ["item_reference"]=> string(1) "1" } [1]=> array(5) { ["id"]=> string(2) "58" ["lic_key_id"]=> string(2) "51" ["lic_key"]=> string(13) "93248cqkdj21as" ["registered_domain"]=> string(14) "domain-name.com" ["item_reference"]=> string(3) "443" } } }
答案 0 :(得分:2)
将以下代码与您的代码相关联。这段代码正在运行。
$domain_to_check = "domain-name.com";
$test = array("registered_domains" => array("registered_domain" => "domain-name-2.com"), array("registered_domain" => "domain-name.com"));
foreach($test as $val) {
if($val['registered_domain'] == $domain_to_check) {
$result = 'success';
break;
} else {
$result = 'failure';
}
}
echo $result;
答案 1 :(得分:1)
使用php strpos
$domainStringFound = strpos($key_listed_domain, $domain_to_check);
if ($key_response == 'success' && $domainStringFound !== false) {
$response_array['status'] = 'Allowed';
}