Intereting Posts
Странное поведение с числами, имеющими начальный нуль декодировать цитируемое сообщение для печати в php Выполнить mysql «создать функцию» с помощью PHP получить всю запись в списке воспроизведения Youtube API V3 с помощью pageToken Как привязать параметры к необработанному запросу БД в Laravel, который используется на модели? Нужна помощь с windows.onload и IE Скрипт для выполнения команды для всех файлов в папке Разработка компонента joomla с помощью запросов Ajax используя javascript и php вместе для проверки Получить xpath из результата поиска определенного шаблона регулярного выражения в кучке xml-файлов CakePHP 1.3 не содержит правильных ассоциаций Как показать другую домашнюю страницу в зависимости от страны пользователя? (SOLVED) Электронная почта для xampp: ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '@' Регулярное выражение PHP – только номер фильтра Виньетка PHP Imagemagick

Ошибка поиска: недействительный 2D-массив

Я создаю многомерный массив через вызов Ajax для заполнения диаграммы Google (столбец). Однако возвращаемый массив вызывает эту ошибку:

Uncaught Error: Not a valid 2D array. 

Это код, который генерирует массив для отправки:

 $chartData = array(); $i = 0; foreach ($hourVal as $value) { if($i <= 9){ $chartData[] = array( "0" . $i => (int) $value ); } else { $chartData[] = array( $i => (int) $value ); } $i++; } 

Это массив, когда я console.log:

 [ [ "Terms", "Visits" ], { 00: 88 }, { 01: 30 }, { 02: 44 }, { 03: 20 } ] 

EDIT: я добавляю строку в начале массива, а также json_encode:

 array_unshift($chartData, array("Terms","Visits")); echo json_encode($chartData); 

Любые идеи, что происходит и как я могу это исправить?

Это не 2D-массив. это массив объектов (и один массив). Когда вы делаете json_encode , вы получаете массив, только если ваш массив PHP является числовым (индексируется начиная с 0 ). В противном случае вы получаете объект (поскольку JavaScript / JSON не имеет «ассоциативных массивов»).

Вы должны убедиться, что ваш массив является числовым и индексированным, начиная с 0 .

 $chartData = array(); $i = 0; foreach ($hourVal as $value) { $chartData[] = array( $i => (int) $value ); $i++; } 

Я не знаю, почему вы делали "0" . $i "0" . $i , но именно это и вызывало вашу проблему. Это создавало «ассоциативный массив», который кодирует как объект.

Я решил это, потому что я отправлял их с префиксом 0, а затем он делал их индексом массива. Пришлось вырезать этот бит и отправить в виде строки. Не желательно, но исправить 🙁