Как преобразовать массив в объект в Laravel API

Привет. Сначала я получаю данные из базы данных в виде массива, затем я хочу преобразовать данные массива в объект. Я пробовал много функций, но не работал в laravel API. Я хочу преобразовать данные массива в объект и вернуть как JSON для API. Я гуглил несколько время, но не нашел никаких решений, никакой помощи тела заранее спасибо.

для API я использую это

return response()->json(['data' => $categories, 'status_code' => 200, 'status' => true],200);   

я пытался

категория представляет собой массив $categories

    $data_object = (object)$categories; 
    $data_array = (array)$categories;

дд ($ data_array); дд ($ data_object);

оба возвращают одинаковый результат

это результат

 array:14 [
  37 => array:5 [
    "id" => 37
    "name" => "Red abya"
    "alias" => "red-abya"
    "is_featured" => 0
  ]
  38 => array:5 [
    "id" => 38
    "name" => "Black Dress"
    "alias" => "black-dress"
    "is_featured" => 0
  ]"is_featured" => 0
  ]
  1 => array:6 [
    "id" => 1
    "name" => "Abayas"
    "alias" => "abayas"
    "is_featured" => 1
    "sub_categories" => array:2 [
      0 => array:5 [
        "id" => 37
        "name" => "Red abya"
        "alias" => "red-abya"
        "is_featured" => 0
      ]
      1 => array:5 [
        "id" => 36
        "name" => "White abaya"
        "alias" => "white-abaya"
        "is_featured" => 0
      ]
    ]
  ]
  25 => array:5 [
    "id" => 25
    "name" => "Discount"
    "alias" => "discount"
    "is_featured" => 0
  ]
]

Проверьте, является ли $categories; массивом или нет?

Iftikhar uddin 23.01.2019 08:20

результат отображается четко и массив

Shahid Hussain 23.01.2019 08:27

То, как вы разместили данные, делает их похожими на строку в кодировке json. Убедитесь, что это действительно массив. Вы можете использовать функцию is_array(), чтобы проверить это.

Joseph_J 23.01.2019 08:28

Проверьте мой ответ, пожалуйста.

Joseph_J 23.01.2019 08:37
Стоит ли изучать 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
4
1 263
3

Ответы 3

Если вы хотите JSON в конце, вы можете попробовать изменить это:

$data_object = (object)$categories; 

к

$data_object = (object)$categories;
$data_object->toJson();
dd($data_object);

Я предполагаю, что $categories — это массив коллекций. Тогда, на ваш взгляд, вы можете json_encode($data_object).

@ShahidHussain, тогда это сработает для вас. Дайте мне знать, если есть какие-либо ошибки.

Iftikhar uddin 23.01.2019 08:33

приведенный выше раздел результатов при возврате

Shahid Hussain 23.01.2019 08:36

Вы уверены, что не конвертируете его обратно в массив? $data_object = (object)$categories; $data_array = (array)$categories;, вы должны просто использовать Object, но во 2-й строке вы снова конвертируете в массив?

Iftikhar uddin 23.01.2019 08:40

используйте эти две категории $data_object = (object)$; $data_array = (массив)$категории; один за другим не одновременно

Shahid Hussain 23.01.2019 08:50

если вы используете почтальона, вы отправляете и получаете данные в формате json. поэтому для этого вы можете использовать json_encode() для преобразования данных в формат json и json_decode() для преобразования данных в формат array(). также в laravel вы получаете данные по экземплярам запроса и отправляете ответ помощником response(), поэтому, если вам нужно получить данные в формате массива, вы можете использовать это: $data_array = (массив)$запрос->все() и для отправки данных: ответ()->json($data_array, 200);

если вы хотите использовать стандартный класс (объект) вместо массива

посмотрите мою функцию для запроса следующим образом: public function test(Request $req){$data_array = (array)$req->all(); вернуть ответ()->json(['data' => $data_array],200); }

saeed_rb 23.01.2019 08:42

код возвращает идеальный результат, который я хочу, но я просто хочу преобразовать в объект, который все братан

Shahid Hussain 23.01.2019 08:47

object(stdClass)#257 (3) { ["id"]=> строка(1) "6" ["имя"]=> строка(15) "ifoooooooooooo" ["код"]=> строка(3) " 500" } это мой результат после использования (объекта) для кастинга для $request->all()

saeed_rb 23.01.2019 08:52

Попробуй это

$categories = array_map(function($categories){
    return (object)$categories;
}, $categories);

я просто хочу преобразовать массив $category в объект, братан

Shahid Hussain 23.01.2019 08:34

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