Для правильного вопроса надо знать половину ответа
Есть ли альтернативы?
Конечно есть.
Наилучшая альтернатива - нормализовать базу. Атрибуты, которые есть у большинства товаров, сделать колонками в основной таблице. Дополнительные атрибуты сделать отдельной таблицей (id_товара, id_атрибута, значение).
Для правильного вопроса надо знать половину ответа
Если строки хранятся в том виде, что вы указали, то у вас должно получиться
{"m":"сообщение","p":["сессия", ["сессия", "строка1", "строка2", "строка3", "строка4"]]}
Если же сессия всё-таки не хранится в массиве, значит надо так:
Для правильного вопроса надо знать половину ответа
У вас элементы основного массива тоже являются массивами. Вот вам и выдаёт ошибку, что в массиве нет элемента с индексом 4. А при замену фигурных скобок на квадратные - это пока только предупреждение.