Как преобразовать строку JSON в массивы

С php мне нужно преобразовать массивы json в массивы, что мне делать, json_encode у меня не сработал, заранее спасибо за помощь.

//последовательность json

[
  {
   "name":"Menu",
   "sub":
   [
     {
      "name":"Menu 2",
      "url":"menu-2.php"
     }
   ]
  }
]

таким образом я должен сделать

array(
    'name'  => 'Menu',
    'sub'   => array(
        array(
            'name'  => 'Menu 2',
            'url'   => 'menu-2.php'
        )
    )
)

я создаю массив json с помощью этой функции Должен ли я внести изменения здесь? Я не очень хорошо разбираюсь в массивах.

<?php
    $connect = new PDO("mysql:host=localhost; dbname=propanel_001", "root", "");
    $parent_category_id = "";
    $query = "SELECT * FROM tb_sayfalar";
    $statement = $connect->prepare($query);
    $statement->execute();
    $result = $statement->fetchAll();
    foreach($result as $row)
    {
        $data = get_node_data($parent_category_id, $connect);
    }
    echo json_encode(array_values($data));
    function get_node_data($parent_category_id, $connect)
    {
        $query = "SELECT * FROM tb_sayfalar WHERE parent_id = '".$parent_category_id."'";
        $statement = $connect->prepare($query);
        $statement->execute();
        $result = $statement->fetchAll();
        $output = array();
        foreach($result as $row)
        {
            $sub_array = array();
            if (array_values(get_node_data($row['id'], $connect))) {
                $sub_array['name'] = $row['page_name']; 
                $sub_array['sub'] = array_values(get_node_data($row['id'], $connect));
            }else{
                $sub_array['name'] = $row['page_name']; 
                $sub_array['url'] = $row['page_url'].".php";
            }
            $output[] = $sub_array;
        }
        return $output;
    }
?>

Вам нужен json_decode3v4l.org/W2sFp

Nick 06.02.2019 02:26

Возможный дубликат json_decode в массив

Roshan 06.02.2019 03:03
Стоит ли изучать 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 и хотите разрабатывать...
1
2
311
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны использовать json_decode для преобразования JSON, представляющего объект, в ассоциативный массив.

Пример кода

$resArr = json_decode($response, true);

Для получения дополнительной информации см. PHP JSON_DECODE

Мне нужно использовать json_decode при создании данных json, я правильно понимаю?

Redmaster 06.02.2019 02:32

пожалуйста, нет таких вещей, как объект json или массив json: json — это просто строка, представляющая объект. Вы можете (в php) сериализовать объект или ассоциативный массив в json string с помощью json_encode и десериализовать строку (декодировать) в объекты или ассоциативные массивы.

YvesLeBorg 06.02.2019 02:39
Ответ принят как подходящий

Это то, что вам нужно, json_decode($json,true);

<?php
$json = '[{"name":"Menu","sub":[{"name":"Menu 2","url":"menu-2.php"}]}]';
$array = json_decode($json,1);
print_r($array[0]);
?>

ДЕМО:https://3v4l.org/JZQCn

ИЛИ используйте его как разборчивое строковое представление переменной с var_export()

<?php
$json = '[{"name":"Menu","sub":[{"name":"Menu 2","url":"menu-2.php"}]}]';
$array = var_export(json_decode($json,1)[0]);
print($array);
?>

ДЕМО:https://3v4l.org/rLA9R

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