Как правильно выводить данные с массива битрикс?
Пытаюсь правильно получить данные, с массива данных подскажите как правильно выводить?
while ($arSect = $rsSect->GetNext())
{
$sectionNames = $arSect["NAME"]; // наше имя
echo "<tr><td>".$arUser['ID']."</td><td>".$arUser['NAME']." ".$arUser['LAST_NAME']." ".$arUser['SECOND_NAME']."</td><td>".$sectionNames." / ".$sectionName."</td></tr>";
}
тут приходят данные так
867 Юлия Белова Анатольевна Главный отдел / Отдел в котором человек
867 Юлия Белова Анатольевна Отдел 1 / Отдел в котором человек
867 Юлия Белова Анатольевна Отдел 2 / Отдел в котором человек
а хотелось бы получать
867 Юлия Белова Анатольевна Главный отдел / Отдел 1 / Отдел 2 / Отдел в котором человек
Весь код:
<?
$result = \Bitrix\Main\UserTable::getList(array(
'select' => array('ID','NAME','LAST_NAME','SECOND_NAME','UF_DEPARTMENT'), // выберем идентификатор и генерируемое (expression) поле SHORT_NAME
'order' => array('LAST_LOGIN'=>'DESC'), // все группы, кроме основной группы администраторов,
));
?>
<table class="allusers">
<thead><th>ID</th><th>Имя Фамилия</th><th>Отдел</th></thead>
<?
while ($arUser = $result->fetch()) {
foreach ($arUser['UF_DEPARTMENT'] as $key => $value) {
}
$arFilter = array("IBLOCK_ID"=>5, "ID" => $value);
//какие свойства хотим получить, в данном случае нам надо название, описание и пользовательское свойство раздела (создается в меню редактирования раздела в админке)
$arSelect = array("NAME", "DESCRIPTION", "UF_PRE");
$rsResult = CIBlockSection::GetList(array("SORT"=>"ASC"), $arFilter, false, $arSelect);
while($ob = $rsResult->GetNext()) {
$sectionName = $ob["NAME"]; // наше имя
}
//пример выборки дерева подразделов для раздела
$rsParentSection = CIBlockSection::GetByID($value);
if ($thisSection = $rsParentSection->GetNext())
{
$arFilter = array('IBLOCK_ID' => 5, "<=LEFT_BORDER" => $thisSection["LEFT_MARGIN"],
">=RIGHT_BORDER" => $thisSection["RIGHT_MARGIN"],
"<DEPTH_LEVEL" => $thisSection["DEPTH_LEVEL"]); // выберет потомков без учета активности
$rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'),$arFilter);
while ($arSect = $rsSect->GetNext())
{
$sectionNames = $arSect["NAME"]; // наше имя
echo "<tr><td>".$arUser['ID']."</td><td>".$arUser['NAME']." ".$arUser['LAST_NAME']." ".$arUser['SECOND_NAME']."</td><td>".$sectionNames." / ".$sectionName."</td></tr>";
}
}
}
?>
Ответы (1 шт):
Автор решения: Максим
→ Ссылка
вот это:
while ($arSect = $rsSect->GetNext())
{
$sectionNames = $arSect["NAME"]; // наше имя
echo "<tr><td>".$arUser['ID']."</td><td>".$arUser['NAME']." ".$arUser['LAST_NAME']." ".$arUser['SECOND_NAME']."</td><td>".$sectionNames." / ".$sectionName."</td></tr>";
}
замените на это:
while ($arSect = $rsSect->GetNext()){
$section = (isset($tab_info[$arUser['ID']]['section']))? $tab_info[$arUser['ID']]['section'] : '';
$tab_info[$arUser['ID']] = [
'id' => "<td>".$arUser['ID']."</td>",
'fio' =>"<td>".$arUser['NAME']." ".$arUser['LAST_NAME']." ".$arUser['SECOND_NAME']."</td>",
'section' => $section.' / '.$arSect["NAME"],
'personalSection' => $sectionName,
];
}
$table = '';
foreach ($tab_info as $row) {
$table .= "<tr>$row[id] $row[fio]<td>$row[section] / $row[personalSection]</td></tr>";
}
echo $table;
вместо этого:
foreach ($arUser['UF_DEPARTMENT'] as $key => $value) {
}
правильнее использовать это:
$value = end($arUser['UF_DEPARTMENT']);