2017-09-18 104 views
0

我想檢查一個值是否存在於解碼的json響應的foreach循環中,並將它與我自己的字符串進行比較。如果$ domain_to_check值存在於$ key_info ['registered_domain']數組中,我需要將$ response_array ['status']設置爲「Allowed」。我試圖使用in_array php函數來檢查值是否存在,但是我沒有成功,並且即使當值位於數組內時,我仍然收回「不允許 - 域未列出」響應。我認爲問題出在我的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陣列 –

相關問題