1

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. I need to set $response_array['status'] to "Allowed" if $domain_to_check value exists inside the $key_info['registered_domain'] array. 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. I think that the problem is with my foreach loop but for the sake of me i can't figure whats wrong.

$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(); of the $data looks like

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" } } }

2 Answers 2

2

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;
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you for your help, i managed to make it work with help of your code.
1

Use php strpos

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

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

1 Comment

I updated my code as you suggested, however i get back the same result which is Not Allowed - Domain not listed, although the $domain_to_check value is inside $key_listed_domain array

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.