<?php

 class BinarySearchAlgorithm {
    private $array;
    private $value;
    public $firstInd;
    private $lastInd;
    
     
    public function Search($array, $value){
        $arrLength = sizeof($array);
        
	if ( 
        // Проверка на пустой массив или позицию за пределами массива 
		!$arrLength ||
		$value < $arrLength[0] ||
		$value > $array[$arrLength - 1]
	) {
		return false;
	}
        
        $firstInd = 0;
        $lastInd = $arrLength - 1;
        
        if($array[$lastInd] <= $value){
            return $lastInd;
        }
        if($array[$firstInd] >= $value){
            return $firstInd;
        }
        
        while($firstInd <= $lastInd){
            $middleInd = (int)floor($firstInd + $lastInd) / 2;
            
            if($value > $array[$middleInd]){
                $firstInd = $middleInd + 1;
            }
            
            elseif($value < $array[$middleInd]){
                $lastInd = $middleInd - 1;
            }
            
            else {
                return $middleInd;
            }  
        }
        return (int)floor($firstInd);
    }
}

$array = [1, 2, 2, 2, 2, 2, 8, 8];

$obj = new BinarySearchAlgorithm;

//var_dump($obj->Search($array, 4));
 


class SubArrlgorithm{
    private $array;
    private $maxLocal;
    public $maximum;
    static $maxLong; 
    
    public function getMaximumSum($array){
        
        $maxLocal = 0;
        $maximum = 0;
        $maxLong = PHP_INT_MAX;
        
        foreach ($array as $item){
            if($maxLong - $maxLocal < $item){
                print_r("Sum is too large");
            }
            
            $maxLocal += $item;

            if($maxLocal < 0){
                $maxLocal = 0;
            }
            
            if($maxLocal > $maximum){
                $maximum = $maxLocal;
            }
        }
        return $maximum;
    }
} 

$array1 = [1, 2, 4, -6, 7, 8, 9];
$sumAlg = new SubArrlgorithm;
print_r($sumAlg->getMaximumSum($array1));

