Добрый день, Автор.
Во-первых: прекратите использовать print_r для вывода результатов, смотрите хотя бы через var_dump() (ибо у битрикс есть обьекты ссылающиемся так или иначе на самого себя и можете попасть в рекурсию).
Во-вторых: если выв вошли в while, значит данные есть, если вы в него не вошли, значит их нет.
В-третьих: с 18 версии, можно больше не фетчить, а использовать foreach.
Попробуйте следующий код:
\ob_start();
echo PHP_EOL."<pre>".PHP_EOL;
$highloadItems = $HLDataClass::getList(array(
"select" => ["*"],
"filter" => $arFilter
));
var_dump([
'filter' => $arFilter,
'rowsCount' => $highloadItems->getSelectedRowsCount()
]);
foreach ($highloadItems as $highloadItem)
{
var_dump( (array) $highloadItem );
}
\file_put_contents($_SERVER['DOCUMENT_ROOT'].'/uplod/testlog.log', \ob_get_clean(), FILE_APPEND);
Собственно код попытается получить все данные по фильтру arFilter, выведет в лог этот массив и количество найденных элементов. Затем каждый найденный элемент в виде ассоциативного массива.
Вывод перенаправит в файл /upload/testlog.log от корня вашего сайта.