привет, у меня есть бэкэнд с php в cpanel, и у меня проблема с одним из jsons. это часть моего php-кода:
...
}elseif ($work == "dollardate") {
$query3 = "SELECT * FROM tabl_dollar_date";
$result3 = $connect->prepare($query3);
$result3->execute();
$out3 = array();
while ($row3 = $result3->fetch(PDO::FETCH_ASSOC)) {
$record3 = array();
$record3["dollar"] = $row3["dollar"];
$record3["date"] = $row3["date"];
array_push($out3, $record3);
}
echo json_encode($out3);
}
?>
этот код показывает это в json:
[
{
"dollar":"15000",
"date":"1397-12-12"
}
]
как удалить массив из json и показать json следующим образом:
{
"dollar":"15000",
"date":"1397-12-12"
}
Из кода кажется, что массив может содержать несколько объектов. Как вы планируете, если он возвращает более одного объекта?
Ты уверен, что хочешь этого? Что делать, если ваш запрос возвращает ноль или более одной строки? Как вы хотите представить эти случаи? Использование массива — это самый простой способ обработки всех случаев одинаково.
у меня проблема с использованием массива json в swift, если у него нет массива, мне удобнее
Я также сталкиваюсь с этой же проблемой, попробуйте rtrim и ltrim, чтобы удалить скобку массива
@MeenaArumugam нет. Вы не хотите обрабатывать строку JSON, изменяя саму строку, а используя объект. В противном случае это может привести к неожиданному поведению
Мухаммад Азизол Аминуддин: спасибо за внимание, в этой таблице больше нет объектов
да, это работает, tnx






Самый простой способ (согласно его коду):
изменить строку
echo json_encode($out3);
к
echo json_encode($out3[0]);
да, но получить первый элемент по его индексу быстрее, чем сдвинуть все остальные после его получения.
С одним элементом это не имеет значения. Но безопаснее для пустого массива/не массива
Да, с этой точки зрения это правильно. Я думал так, всегда будет результат из базы данных.
Одним из решений является то, что если вы просто хотите получить последнее значение (в случае, если в таблице несколько записей), измените SELECT на порядок по убыванию даты, а также установите LIMIT на 1, чтобы в любом случае получить только 1 запись, и удалите цикл для получить данные и просто получить 1 запись...
$query3 = "SELECT `date`, `dollar`
FROM `tabl_dollar_date`
ORDER BY `date` desc
LIMIT 1";
$result3 = $connect->prepare($query3);
$result3->execute();
$row3 = $result3->fetch(PDO::FETCH_ASSOC);
echo json_encode($row3);
Поскольку вы знаете, какие поля вам нужны из SELECT, лучше просто выбрать эти поля, а не всегда использовать *. Это также означает, что, поскольку набор результатов содержит только те поля, которые вам нужны, вы можете напрямую json_encode() получить набор результатов, а не извлекать поля из одного массива в другой.
Остается по-прежнему JSON. Почему вам нужно удалить его или сделать его отдельным?