kapolos
9/4/2015 - 6:56 AM

checkSumExists.php

/**
 * Checks if the sum of any 2 values of the array equals to $sum
 * Assumes a non-associative array with numeric values
 *
 * @param array   $arr
 * @param integer $sum
 *
 * @return bool
 */
function checkSumExists(array $arr, $sum)
{
    sort($arr, SORT_NUMERIC);
    $topdown = 0;
    $downup = count($arr) - 1;

    while ($topdown < $downup) {
        $step = $arr[$topdown] + $arr[$downup];
        switch (TRUE) {
            case ($step == $sum):
                return TRUE;
                break;
            case ($step < $sum):
                $topdown++;
                break;
            case ($step > $sum):
                $downup++;
                break;
        }
    }

    return FALSE;
}