2017-09-18 1 views
0

Ich versuche zu überprüfen, ob ein Wert innerhalb einer foreach-Schleife von einer decodierten JSON-Antwort existiert und vergleiche sie mit meiner eigenen Zeichenfolge. Ich muss $ response_array ['status'] auf "Allowed" setzen, wenn $ domain_to_check im Array $ key_info ['registred_domain'] existiert. Ich versuchte, in_array php Funktion zu verwenden, um zu prüfen, ob Wert existiert, jedoch hatte ich keinen Erfolg und ich bekomme immer wieder Antwort "Nicht erlaubt - Domain nicht aufgelistet", auch wenn der Wert innerhalb des Arrays ist. Ich denke, dass das Problem mit meiner foreach Schleife ist, aber für mich kann ich nicht verstehen, was falsch ist.Überprüfen, ob ein String in einer JSON-Foreach-Schleife existiert

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

Hier ist wie meine var_dump(); die Daten $ wie

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

Antwort

1

Relate mit Ihrem Code Code unten. Dieser Code funktioniert.

$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

Danke für Ihre Hilfe, ich es geschafft, Lass es mit Hilfe deines Codes funktionieren. –

0

Verwendung von PHP strpos

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

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

ich meinen Code aktualisiert, wie Sie vorgeschlagen, aber ich das gleiche Ergebnis zurück, das ist nicht erlaubt - Domain nicht aufgeführt, obwohl der $ domain_to_check Wert innerhalb key_listed_domain Array $ ist –

Verwandte Themen