Задача: вот такая странная задача, нужно удалить из инфоблока половину элементов. Не важно каких, просто половину элементов.

Получение и удаление элементов через API
Скрипт который удалит элементы, если вы знаете сколько элементов в инфоблоке. Например, в инфоблоке 12 346 элементов, соотвественно нужно удалить 6 173:
use Bitrix\Main\Loader,
Bitrix\Iblock\ElementTable;
Loader::includeModule('iblock');
$rsElements = ElementTable::getList([
'filter' => [
'IBLOCK_ID' => '1', // ID инфоблока
],
'select' => [
'ID',
],
'limit' => '6173'
]);
foreach ($rsElements as $element) {
CIBlockElement::Delete($element['ID'])
}
С помощью ElementTable::getList получили 6173 элемента этого инфоблока и удалили их с помощью CIBlockElement::Delete
Другой вариант удаления
Этот вариант подойдет, если не знаете сколько элементов в инфоблоке и не хочется делать скрипт подсчета.
use Bitrix\Main\Loader,
Bitrix\Iblock\ElementTable;
Loader::includeModule('iblock');
$rsElements = ElementTable::getList([
'filter' => [
'IBLOCK_ID' => '1', // ID инфоблока
],
'select' => [
'ID'
]
]);
foreach ($rsElements as $k => $element) {
if ($k % 2 == 0) {
CIBlockElement::Delete($element['ID'])
}
}
Здесь происходит перебор полученного списка элементов. С помощью переменной $k отслеживается текущий индекс элемента в списке. Условие if ($k % 2 == 0) проверяет, является ли индекс чётным (то есть, каждый второй элемент). Если условие выполняется, вызывается метод Delete класса CIBlockElement для удаления элемента по его ID.
Таким образом удалиться ровно половина элементов.