Хочу вывести записи в два блока list-group (если запись с id_user == 1 то в один блок вносить, а если id_user == 3 то в другой ). Но они выводятся каждая запись отдельно. Что я делаю не так?
stdClass Object
(
[tasks] => Задача 1
[id_user] => 3
)
stdClass Object
(
[tasks] => Задача 2
[id_user] => 3
)
stdClass Object
(
[tasks] => Задача 3
[id_user] => 3
)
stdClass Object
(
[tasks] => Задача 4
[id_user] => 3
)
stdClass Object
(
[tasks] => Задача 1
[id_user] => 1
)
stdClass Object
(
[tasks] => Задача 2
[id_user] => 1
)
foreach($data['getTask'] as $Tasks){ //print_r($Tasks);
if($Tasks->id_user == 1){ ?>
<div class="list-group">
<li class="list-group-item active">M</li>
<li class="list-group-item"><?php echo $Tasks->tasks ?></li>
</div>
<?php }
if($Tasks->id_user == 3){ ?>
<div class="list-group">
<li class="list-group-item active">P</li>
<li class="list-group-item"><?php echo $Tasks->tasks ?></li>
</div>
<?php }
}
Нужно вот так, что бы было все в кучке.
Если опустить тот факт, что а данном моем ответе написан говнокод, ибо я в принципе не приемлю вывод html непосредственно в php, то решение задачи представляется следующим.
Допустим вы взяли данные из json (ну или еще откуда то, что получили stdClass
):
$json_data = '[{"tasks":"Задача 1","id_user":3},
{"tasks":"Задача 2","id_user":3},
{"tasks":"Задача 3","id_user":3},
{"tasks":"Задача 4","id_user":3},
{"tasks":"Задача 1","id_user":1},
{"tasks":"Задача 2","id_user":1}]';
$data = json_decode($json_data);
Теперь вы хотите разделить задачи на группы по пользователям. Для этого сначала определите уникальные идентификаторы пользователей:
$uids = array_unique( array_map(function($item){ return $item->id_user; }, $data));
sort($uids);
Заметьте, что если бы у вас был не массив stdClass
, а просто вложенные массивы, то можно было бы обойтись array_unique(array_column($data, 'id_user'))
. Если же вы все таки десериализовали данные из json, то второй булевый-парамер овтечает за преобразование объектов в массивы, а не классы, т.е. json_decode($json_data, true)
даст двух-уровневый массив, а не массив объектов.
ну а теперь говнокод:
foreach($uids as $uId){ ?>
<div class="list-group">
<li class="list-group-item active">user: <?= $uId ?></li>
<?
foreach($data as $d){
if($d->id_user != $uId) continue;
?>
<li class="list-group-item"><?= $d->tasks ?></li>
<?
}?>
</div>
<?
}
Этот код генерирует следующую разметку
<div class="list-group">
<li class="list-group-item active">user: 1</li>
<li class="list-group-item">Задача 1</li>
<li class="list-group-item">Задача 2</li>
</div>
<div class="list-group">
<li class="list-group-item active">user: 3</li>
<li class="list-group-item">Задача 1</li>
<li class="list-group-item">Задача 2</li>
<li class="list-group-item">Задача 3</li>
<li class="list-group-item">Задача 4</li>
</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не работает логин в Yii2 - после каждого запроса создаётся новая сессия
Добрый деньНужно разбить строку на массив при этом сохранить разделитель Как такое реализовать с explode еще не знаю
Доброе время суток! Имеется сайт, не мойПроблема следующая: при нажатии на кнопку, отправляется AJAX-запрос, на сервер
Помогите решить вопросПишу плагин, мне нужно чтобы при нажатии на radio button вставлялся хук без перезагрузки страницы, тоесть мне нужно вывести...