dtny30176 2017-09-18 13:14
浏览 239
已采纳

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

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条回答 默认 最新

  • duanlangwen9597 2017-09-18 14:22
    关注

    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;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里