PHP

Как на php и json_encode чередовать {} и []

Пример:

{"data":[

"1":TRUE

"2":FALSE

] }
А проблема в чём? В том, что json_encode возвращает валидный JSON, а тебе нужно получить невалидный?
Олег Еремеичев
Олег Еремеичев
87 951
Лучший ответ
Сергей Баранов в чем разница?
Твоя конструкция: {"data":["1":TRUE, "2":FALSE]} ошибочна: в квадратных скобках может быть только СПИСОК значений - БЕЗ ключей. Ключи же проставляются автоматически: подряд идущие целые числа, начиная с 0.

Т.е. либо {"data":[TRUE, FALSE]}, либо {"data":{"1":TRUE, "2":FALSE}}.

Если твой PHP-массив имеет ТОЛЬКО подряд идущие целые ключи, начиная с нуля - он будет в квадратных скобках. Иначе (имеются нечисловые ключи, последовательность ключей начинается не с 0, в последовательности ключей есть пропуски) - в фигурных.

Объект всегда будет в фигурных скобках.

Надо явно фигурные скобки - используй преобразование в объект: (object)$array

Надо явно прямоугольные - используй https://www.php.net/manual/ru/function.array-values.php
Аиз Рискалиев
Аиз Рискалиев
87 296
В фигурных скобочках объекты, а в квадратных скобочках массивы.
Для json только так.
так как ты хочешь не получится потому что в JSON - можно положить либо массив тогда скобки будут квадратные а индексы числовые без кавычек либо объект тогда скобки будут фигурные а индексы строковые в кавычках . в php разницы особо нет, для него и то и то массив но есть нюанс если сделаешь в php массиве все индексы числовыми прожуешь его через json_encode() то в JSON тоже будет точно массив а не объект а если надо наоборот получить в JSON объект тогда хотябы один ключ надо сделать в php массиве строковым
https://onlinephp.io/c/a73ed - вот эксперементальный пример
Сергей Баранов я уже понял что не так написал, просто я хотел получить это https://docs.ely.by/ru/minecraft-auth.html#id1