<?php

error_reporting(-1);

$amount = 6600;

$bills = array (
    100     => 23,
    200     => 3,
    500     => 1,
    2000    => 4,
    5000    => 1
);

echo "Сумма: $amount\n";
//чек на первые ошибки
$check100 = $amount % 100;
if ($check100 != 0) {
    echo "Выдача невозможна: сумма не кратна 100";
    exit();
} elseif ($amount <= 0) {
    echo "Выдача невозможна: сумма меньше или равна нулю";
    exit();
}
//функция для удобства
function massCheck($bill, $much, $amount) {
    $cash = intval($amount/$bill);
    if ($cash <= $much) {
        return $cash;
    } elseif ($cash > $much) {
        return $much;
    }
}
//цикл для расчёта кол-ва купюр
$onlyNumbers = [5000, 2000, 500, 200, 100];
$count = count($onlyNumbers);
$pusher = [];
for ($i = 0; $i < $count; $i++) {
    $cash = massCheck($onlyNumbers[$i], $bills[$onlyNumbers[$i]], $amount);
    if ($amount == 0) {
        break;
    } elseif ($bills[$onlyNumbers[$i]] > 0){
        $cashCheck = $cash*$onlyNumbers[$i];
        $amount = $amount-$cashCheck;
    }
    if ($cash != 0) {
        array_push($pusher,$cash . "x$onlyNumbers[$i]");
    }
}

if ($amount != 0) {
    echo "Выдача невозможна: в банкомате не хватает купюр";
    exit();
}
//клеим, выводим
$res = implode(' ', $pusher);
echo "Выдача возможна, число купюр:\n$res";