я не могу получить указанный ключ, используя array_key_exist для ответа JSON - PullRequest
0 голосов
/ 18 июня 2019
$status_key ="status"

$response = {"error":false,"data":{"id":16420728,"order_id":"5000","mobile_no":"9995088810","amount":20,"balance":46.89,"status":"failure","tnx_id":"","response":"Transaction Failed"}}"


$result = json_decode($response);

это печатает:

{ 
    ["error"]=> bool(false) 
    ["data"]=> object(stdClass)#24 (8) { 
        ["id"]=> int(16420728) 
        ["order_id"]=> string(4) "5000" 
        ["mobile_no"]=> string(10) "9995088810" 
        ["amount"]=> int(20) 
        ["balance"]=> float(46.89) 
        ["status"]=> string(7) "failure" 
        ["tnx_id"]=> string(0) "" 
        ["response"]=> string(18) "Transaction Failed" 
    }
}

теперь я проверяю указанный ключ

var_dump(array_key_exist(status_key,result));

когда я выполняю var_dump() эту функцию, она возвращает "bool(false)"

1 Ответ

2 голосов
/ 18 июня 2019

У вас много синтаксических ошибок, и вам нужно немного изменить код, как показано ниже:

var_dump(array_key_exists($status_key,$result->data));
//- --------------------^-^-----------^-------^--^-- missing those

Вывод: - https://3v4l.org/uWB7s

ДляДля лучшего подхода к поиску воспользуйтесь этой веткой: Проверьте, существует ли конкретный ключ массива в многомерном массиве - PHP

$result = json_decode($response, true);

var_dump(findKey($result, $status_key));

function findKey($array, $keySearch)
{
    foreach ($array as $key => $item) {
        if ($key == $keySearch) {
            return true;
        } elseif (is_array($item) && findKey($item, $keySearch)) {
            return true;
        }
    }
    return false;
}

Вывод: - https://3v4l.org/KaX9F

...