Максимальное кол-во товаров

Напишите функцию, которая принимает массив цен товаров и остаток денег на вашей карте. Функция должна вернуть максимальное количество товаров, которые вы сможете купить на все деньги.

max([1, 2], 7) // 2
max([1, 2, 10, 1], 2) // 2
max([1, 2, 3, 4], 7) // 3
max([3, 7, 2, 9, 4], 15) // 3

Решение:

function max_product($price_array, $money) {
    $product_counter = 0;
    $i = 0;
    // if have no many
    if ($money === 0){
        return $product_counter = 0;
    }
    sort($price_array, SORT_REGULAR );
    if (is_array($price_array)) {
        while ($i != count($price_array) ) {
            $money = $money - $price_array[$i];
            if ($money >= 0) {
                $product_counter++;
                $i++;
            } elseif ($money < 0) {
                break;
            }
        }
    }
    return $product_counter;
}