Intereting Posts
Загрузка содержимого с использованием Ajax с PHP Переименование URL-адреса с двойным параметром Отправить значения из нескольких текстовых полей в виде массивов Ошибка MySQL: «Количество столбцов не соответствует количеству значений в строке 1» – помощь для начинающих Eclipse (PDT) досадно блокирует файлы .phtml для типа содержимого PHP Создание динамического списка ul li из DB Magento addFieldToFilter: два поля, совпадающие с OR, а не AND Mailaparse на XAMPP 1.7.3 Какой тип данных MySQL использовать для IP-адреса? Как получить последние видео с нескольких каналов Youtube в одном API-интерфейсе можете использовать httpClient в Android Studio? Обработка непрочитанных сообщений в PHP / MySQL Laravel SwiftMailer: ожидаемый код ответа 250, но получил код «530», с сообщением «530-5.5.1 Требуется аутентификация помещает маркер в URL безопасно, чтобы предотвратить атаки CSRF в приложениях PHP? Ошибка загрузки файла 404 на сервере

php json_encode кодирует одни и те же данные дважды

Я получаю некоторые данные из базы данных и кодирую их в json:

$json = ""; if($result = $dbc->query($query)) { $num = $result->num_rows; for($i = 0; $i < $num; $i++) { $row = $result->fetch_array(); $json .= json_encode($row); if($i != ($num-1)) { $json .= ','; } } } 

но вместо того, чтобы получить строку json в формате:

 {"name:"joe", "age":"22", "etc":"etc"} 

Я получаю каждое значение, дублируемое, потому что оно дает мне имя элемента как индекс ассоциативного и неассоциативного массива. Поэтому я получаю:

 {"0":"joe", "name":"joe", "1":"22", "age":"22", "3":"etc", "etc":"etc"} 

Хотя я все еще могу использовать json. Он по-прежнему в два раза больше, чем я хочу, и поэтому неэффективен. В любом случае я могу получить метод json_encode, чтобы просто дать мне ассоциативные массивы в виде json-тегов? (Неправильные слова, чтобы описать эти вещи без сомнения)

Большое спасибо

Это потому, что вы используете fetch_array() (выделение мое):

mysqli_fetch_array () – это расширенная версия функции mysqli_fetch_row (). В дополнение к хранению данных в числовых индексах массива результатов функция mysqli_fetch_array () также может хранить данные в ассоциативных индексах, используя имена полей результирующего набора как ключи.

fetch_assoc() этого используйте fetch_assoc() .

Просто измените $row = $result->fetch_array(); to $row = $result->fetch_assoc();

Пекка, вероятно, прав, но я хотел бы добавить, что вы делаете больше работы для себя, вызывая json_encode() для каждой строки. Вероятно, лучше построить структуру данных, а затем вызвать json_encode() :

 $rows = array(); if ($result = $dbc->query($query)) { $num = $result->num_rows; for ($i = 0; $i < $num; $i++) { $rows[] = $result->fetch_assoc(); } } $json = json_encode($rows); 

Маркировка как вики сообщества, так как это предложение на практике, а не ответ .