2017-09-18 5 views
0

デコードされたjson応答からforeachループ内に値が存在するかどうかをチェックし、それを自分の文字列と比較しようとしています。 $ domain_to_check値が$ key_info ['registered_domain']配列の中にある場合、$ response_array ['status']を "Allowed"に設定する必要があります。私は値が存在するかどうかをチェックするためにin_array PHP関数を使用しようとしましたが、私は成功しなかったし、値が配列の中にあっても "Not Allowed - Domain not listed"私は問題が私のforeachループであると思うが、私のために何が間違っているのか分からない。文字列がjson 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(); $データの

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

答えて

1

のように見えますが、あなたのコードとコードの下に関連付けます。このコードは機能しています。

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

ですが、あなたの助けをありがとう、ドメインがリストされていないが、私はに管理しましたあなたのコードの助けを借りてそれを動作させる。 –

0

PHPを使用しstrpos

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

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

あなたが示唆したように、私はしかし、私が許可されていない同じ結果取り戻す、私のコードを更新 - $のdomain_to_check値は内部の$ key_listed_domain配列 –

関連する問題