Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2014, 19:59   #1
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию Многомерный мессив -> json

Нужно получить json вида
Код:
{
    "answers": [
        {
            "1": {
                "1": "1",
                "1": "1",
                "1": "1",
            }
        },
        {
            "2": {
                "1": "1",
                "1": "1",
                "1": "1",
            }
        }
    ]
}
php

Код:
	while($row = mysqli_fetch_object($result))
	{
		$items = array
		(
			$row->num => array 
			(
			        "answers" => array
			        (
				      $answers = array
				      (
					      '1' => 1,
					      '1' => 1,
					      '1' => 1,
                                      ),
				),
			),
		);
	}
В базе несколько записей, в итоге получаю

Код:
{
    "answers: {
        "1": [
            {
                "1": "1",
                "1": "1",
                "1": "1",
            }
        ]
    }
}
Вопрос, как мне получить такое же дерево как в примере?
Почему мое такое маленькое, хотя в бд не одна запись?

Последний раз редактировалось zaki; 03.12.2014 в 20:11.
zaki вне форума Ответить с цитированием
Старый 03.12.2014, 20:46   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Потому что на каждой итерации массив $items создается заново, а не дополняется.
Arigato вне форума Ответить с цитированием
Старый 03.12.2014, 20:57   #3
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Потому что на каждой итерации массив $items создается заново, а не дополняется.
Я тоже так думал, но берется первая строка из бд, а не последняя.
zaki вне форума Ответить с цитированием
Старый 03.12.2014, 21:00   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

ХЗ, но накопления элементов у тебя все равно нет, в любом случае будет только одна строка.
Arigato вне форума Ответить с цитированием
Старый 03.12.2014, 21:06   #5
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
ХЗ, но накопления элементов у тебя все равно нет, в любом случае будет только одна строка.
Попытался сделать так
Код:
	while($row = mysqli_fetch_object($result))
	{
         $key++;
		$items = array
		(
			$row->num => array 
			(
			        "answers" => array
			        (
				$res[$key] = array
				(
				      $answers = array
				      (
					      '1' => 1,
					      '1' => 1,
					      '1' => 1,
                                      ),
				),
                                ),
			),
		);
	}
Сделал так, без результатов. Или я не правильно сделал?
zaki вне форума Ответить с цитированием
Старый 03.12.2014, 21:10   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

$items = array - это вам ни о чем не говорит? На каждой итерации $items пересоздается.
Arigato вне форума Ответить с цитированием
Старый 03.12.2014, 21:14   #7
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
$items = array - это вам ни о чем не говорит? На каждой итерации $items пересоздается.

Можете разжевать? Что то я затупил...
zaki вне форума Ответить с цитированием
Старый 03.12.2014, 21:18   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Ну до цикла сделай: $items = array();
А в цикле $items[] = ...
Arigato вне форума Ответить с цитированием
Старый 03.12.2014, 21:25   #9
zaki
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Ну до цикла сделай: $items = array();
А в цикле $items[] = ...
Да, я так делал, зутипил что то.

Код:
[
    {
        "answers": {
            "3": {
                "1": "1",
                "1": "1",
                "1": "1",
            }
        }
    },
    {
        "answers": {
            "4": {
                "1": "1",
                "1": "1",
                "1": "1",
            }
        }
    }
]
Все равно выходит не так, как надо...
zaki вне форума Ответить с цитированием
Старый 03.12.2014, 21:33   #10
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Как написано, так и выходит.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерный массивы (на C#) andrey1996 Помощь студентам 7 03.12.2014 18:13
Многомерный массив $Optimus$ Помощь студентам 1 06.09.2013 20:39
многомерный массив fedkov2013 Паскаль, Turbo Pascal, PascalABC.NET 0 26.05.2013 11:47
многомерный массив. C# Serg94 Помощь студентам 8 13.12.2011 01:53
Многомерный масив NAG Общие вопросы C/C++ 1 05.03.2010 22:31