PHP-массив для объекта Json

Мне нужно преобразовать массив PHP в json, но я не понимаю, чего я ожидаю. Я хочу, чтобы это был объект, с которым я могу легко перемещаться с помощью числового индекса. Вот пример кода:

$json = array(); $ip = "192.168.0.1"; $port = "2016"; array_push($json, ["ip" => $ip, "port" => $port]); $json = json_encode($json, JSON_PRETTY_PRINT); // ----- json_decode($json)["ip"] should be "192.168.0.1" ---- echo $json; 

Это то, что я получаю

 [ [ "ip" => "192.168.0.1", "port" => "2016" ] ] 

Но я хочу получить объект вместо массива:

 { "0": { "ip": "192.168.0.1", "port": "2016" } } 

Спасибо 🙂

Вы хотите json_encode($json, JSON_FORCE_OBJECT) .

Флаг JSON_FORCE_OBJECT , как следует из названия, заставляет вывод json быть объектом, даже если он в противном случае был бы представлен как массив.

Вы также можете исключить использование array_push для немного более чистого кода:

 $json[] = ['ip' => $ip, 'port' => $port]; 

просто используйте только

 $response=array(); $response["0"]=array("ip" => "192.168.0.1", "port" => "2016"); $json=json_encode($response,JSON_FORCE_OBJECT); 

Чтобы получить массив с объектами, вы можете создать stdClass () вместо массива для внутренних элементов, как показано ниже;

 <?PHP $json = array(); $itemObject = new stdClass(); $itemObject->ip = "192.168.0.1"; $itemObject->port = 2016; array_push($json, $itemObject); $json = json_encode($json, JSON_PRETTY_PRINT); echo $json; ?> 

Рабочий пример http://ideone.com/1QUOm6

 $ip = "192.168.0.1"; $port = "2016"; $json = array("response" => array("ip" => $ip, "port" => $port)); //IF U NEED AS JSON OBJECT $json = [array("ip" => $ip, "port" => $port)]; //IF U NEED AS JSON ARRAY $json = json_encode($json); echo $json;