nahid / jsonq

A PHP query builder for JSON
Creative Commons Zero v1.0 Universal
870 stars 105 forks source link

Get is not resetting the array index #37

Closed vishalv26 closed 5 years ago

vishalv26 commented 5 years ago

Get is not resetting the array index

It is outputting the original index of array/json

nahid commented 5 years ago

Please give me an example

ErickZH commented 5 years ago

My file json

{
    "name": "errors",
    "description": "Errors OpenPay list",
    "errors" : [
        {
            "error_code": "1000",
            "http_code": "500",
            "description": "Ocurrió un error interno en el servidor de Openpay"
        },
        {
            "error_code": "1001",
            "http_code": "400",
            "description": "El formato de la petición no es JSON, los campos no tienen el formato correcto, o la petición no tiene campos que son requeridos"
        },
        {
            "error_code": "1002",
            "http_code": "401",
            "description": "La llamada no esta autenticada o la autenticación es incorrecta"
        },
        {
            "error_code": "1003",
            "http_code": "422",
            "description": "La operación no se pudo completar por que el valor de uno o más de los parametros no es correcto"
        }
}

My code

$jsonq = new Jsonq('file.json');

$res = $jsonq->from('errors')
            ->where('error_code', '=', '1003')
            ->get();
return $res;

Output

{"3":{"error_code":"1003","http_code":"422","description":"La operaci\u00f3n no se pudo completar por que el valor de uno o m\u00e1s de los parametros no es correcto"}}

How can I get the following?

{"error_code":"1003","http_code":"422","description":"La operaci\u00f3n no se pudo completar por que el valor de uno o m\u00e1s de los parametros no es correcto"}
ErickZH commented 5 years ago

I added a foreach to solve my problem

$jsonq = new Jsonq(storage_path('errors_openpay.json'));

        $res = $jsonq->from('errors')
                    ->where('error_code', '=', $error)
                    ->get();

        foreach ($res as $r) {
            return $r;
        }
nahid commented 5 years ago

you can use

$res = $jsonq->from('errors')
                    ->where('error_code', '=', $error)
                    ->first();
ErickZH commented 5 years ago

Thanks, @nahid