Удалить массив из Json в PHP

привет, у меня есть бэкэнд с 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. Почему вам нужно удалить его или сделать его отдельным?

Jay Blanchard 18.03.2019 13:47

Из кода кажется, что массив может содержать несколько объектов. Как вы планируете, если он возвращает более одного объекта?

Muhammad Azizol Aminuddin 18.03.2019 13:48

Ты уверен, что хочешь этого? Что делать, если ваш запрос возвращает ноль или более одной строки? Как вы хотите представить эти случаи? Использование массива — это самый простой способ обработки всех случаев одинаково.

Hans-Martin Mosner 18.03.2019 13:50

у меня проблема с использованием массива json в swift, если у него нет массива, мне удобнее

mehran kmlf 18.03.2019 13:53

Я также сталкиваюсь с этой же проблемой, попробуйте rtrim и ltrim, чтобы удалить скобку массива

Meena Arumugam 18.03.2019 13:55

@MeenaArumugam нет. Вы не хотите обрабатывать строку JSON, изменяя саму строку, а используя объект. В противном случае это может привести к неожиданному поведению

Cid 18.03.2019 13:59

Мухаммад Азизол Аминуддин: спасибо за внимание, в этой таблице больше нет объектов

mehran kmlf 18.03.2019 14:00
«У меня проблема с использованием массива JSON в Swift» исправить это, безусловно, лучший способ. В противном случае вам идеально подойдет Ответ Танайдина.
Cid 18.03.2019 14:01

да, это работает, tnx

mehran kmlf 18.03.2019 14:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
68
2

Ответы 2

Самый простой способ (согласно его коду):

изменить строку

echo json_encode($out3);

к

echo json_encode($out3[0]);
array_shift() тоже справится - secure.php.net/manual/en/function.array-shift.php
Damian Dziaduch 18.03.2019 14:01

да, но получить первый элемент по его индексу быстрее, чем сдвинуть все остальные после его получения.

tanaydin 18.03.2019 14:17

С одним элементом это не имеет значения. Но безопаснее для пустого массива/не массива

Damian Dziaduch 18.03.2019 14:19

Да, с этой точки зрения это правильно. Я думал так, всегда будет результат из базы данных.

tanaydin 18.03.2019 14:21

Одним из решений является то, что если вы просто хотите получить последнее значение (в случае, если в таблице несколько записей), измените 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() получить набор результатов, а не извлекать поля из одного массива в другой.

Другие вопросы по теме