[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как записать в массив переменную из цикла?
Dimaz
Приветствую всех. Нужно передать клиенту данные в формате json. Поле theme_name содержит название темы. Поэтому не вижу смысла прогонять это поле в цикле, так как значения будут дублироваться. Лишние данные клиенту ни к чему. Хочу записать название темы в массив только один раз. В данном случае переменная $row доступна только в цикле, поэтому в полученном json-объекте theme_name = null. Как быть? Нужно записать это значение вне цикла.
while($row = $res->fetch_assoc()){
$arr['response'][] = array('question' => $row['question'],'answer' => $row['answer']);
}
$arr['theme_name'] = $row['theme_name'];
echo json_encode($arr);
sergeiss
А кто тебе мешает сделать эту запись внутри цикла - и один раз???
Напиши внутри этого цикла
if( !isset( $arr['theme_name'] ) )
$arr['theme_name'] = $row['theme_name'];

Да даже если ты без ИФа напишешь, то просто этот элемента массива будет перезаписываться и на выходе он будет в одном экземпляре :)

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Dimaz
Вот это как раз меня и смущает, что будет перезаписываться по несколько раз. А до цикла никак не сделать?
sergeiss
Цитата (Dimaz @ 11.05.2013 - 23:57)
Вот это как раз меня и смущает, что будет перезаписываться по несколько раз.

Чем именно смущает? Переменная (элемент массива) будет в единственном экземпляре. Да, будет тратиться время на перезапись. Но если ты будешь анализировать, записал ты уже или нет, то на это тоже время понадобится! И сделана проверка будет столько же раз, сколько может быть сделана перезапись. И еще не известно, что будет быстрее.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Dimaz
Спасибо! Сделаю так. Еще вопросик. Мне нужно получить из базы такие данные как, название темы, список вопросов, список ответов. Все сделал одним запросом. Т.е. идет выборка из трех таблиц. Не лучше ли будет разбить на два запроса? Сначала получить название темы, а уже потом вопросы с ответами. Название темы содержит всего одно значение и в результирующей таблице дублируется напротив каждого вопроса.
sergeiss
Цитата (Dimaz @ 12.05.2013 - 00:17)
Не лучше ли будет разбить на два запроса? Сначала получить название темы, а уже потом вопросы с ответами. Название темы содержит всего одно значение и в результирующей таблице дублируется напротив каждого вопроса.

Может быть и так. Но не видя запросов, сложно однозначно ответить smile.gif Возможно, что 2 запроса будут и лучше.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Dimaz
Вот привожу запрос:
SELECT `theme_names`.`theme_name`,`questions`.`question`,GROUP_CONCAT(`answers`.`answer`)
FROM `theme_names`,`questions`,`answers`
WHERE `theme_names`.`id`=`questions`.`theme_id` AND `questions`.`id`=`answers`.`quest_id` GROUP BY `questions`.`id`
sergeiss
Ты знаешь... В данном случае, я думаю, имеет смысл сделать 2 запроса вместо этого одного. Именно по той причине, что ты написал ранее, чтобы не было дублирования.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Dimaz
Спасибо большое. Сделаю два:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.