简体   繁体   English

检查json foreach循环中是否存在字符串

[英]Check if string exists inside a json foreach loop

I am trying to check if a value exists inside an foreach loop from a decoded json response and compare it to my own string. 我试图从解码的json响应中检查foreach循环中是否存在值,并将其与我自己的字符串进行比较。 I need to set $response_array['status'] to "Allowed" if $domain_to_check value exists inside the $key_info['registered_domain'] array. 如果$ key_info ['registered_domain']数组中存在$ domain_to_check值,我需要将$ response_array ['status']设置为“Allowed”。 I tried to use in_array php function to check if value exists, however i had no success and i keep getting back "Not Allowed - Domain not listed" response even when the value is inside the array. 我试图使用in_array php函数来检查值是否存在,但是我没有成功,并且即使值在数组内部,我也会继续回复“Not Allowed - Domain not listed”响应。 I think that the problem is with my foreach loop but for the sake of me i can't figure whats wrong. 我认为问题出在我的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);

Here is how my var_dump(); 这是我的var_dump(); of the $data looks like $ 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" } } }

Relate below code with your code. 将以下代码与您的代码相关联。 This code is working. 这段代码正在运行。

    $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;

Use php strpos 使用php strpos

$domainStringFound = strpos($key_listed_domain, $domain_to_check);

if ($key_response == 'success' && $domainStringFound !== false) {
  $response_array['status'] = 'Allowed';
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM