json_encode function not return Braces {} when array is empty in php

use the JSON_FORCE_OBJECT option of json_encode:

json_encode($status, JSON_FORCE_OBJECT);

Documentation

JSON_FORCE_OBJECT (integer) Outputs an object rather than an array when a non-associative array is used. Especially useful when the recipient of the output is expecting an object and the array is empty. Available since PHP 5.3.0.

Or, if you want to preserve your "other" arrays inside your object, don't use the previous answer, just use this:

$status = array(
                "message"=>"error",
                "club_id"=>$_club_id,
                "status"=>"1",
                "membership_info"=> new stdClass()
                );

$status = array(
                "message"=>"error",
                "club_id"=>$_club_id,
                "status"=>"1",
                "membership_info"=>(object) array(),
                );

By casting the array into an object, json_encode will always use braces instead of brackets for the value (even when empty).

This is useful when can't use JSON_FORCE_OBJECT and when you can't (or don't want) to use an actual object for the value.


There's no difference in PHP between an array and an "object" (in the JSON sense of the word). If you want to force all arrays to be encoded as JSON objects, set the JSON_FORCE_OBJECT flag, available since PHP 5.3. See http://php.net/json_encode. Note that this will apply to all arrays.

Alternatively you could actually use objects in your PHP code instead of arrays:

$data = new stdClass;
$data->foo = 'bar';
...

Maybe it's simpler to handle the edge case of empty arrays client-side.