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

#php #json #phpmyadmin

#php #json #phpmyadmin

Вопрос:

привет, у меня есть серверная часть с php в cpanel, и у меня проблема с одним из json. это часть моего 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"
   }
  

Комментарии:

1. То, что осталось, по-прежнему является JSON. Зачем вам его удалять или делать отдельным?

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

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

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

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

Ответ №1:

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

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

 echo json_encode($out3);
  

Для

 echo json_encode($out3[0]);
  

Комментарии:

1. array_shift() также выполнит эту работу — secure.php.net/manual/en/function . array-shift.php

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

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

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

Ответ №2:

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