<?php
set_time_limit(600);
$a = array();
$time = array('for_loop'=>0, 'array_chunk'=>0, 'while_floor'=>0, 'while_array_slice'=>0);
// for loop
for($c=1;$c<=10;$c++){
	$time_start = microtime(true);

	for($i=1;$i<=100;$i+=2)
		$a[]=$i;

	$two_pair_as_range_compare = function($array, $compare){
		for($i=0;$i<count($array);$i+=2){
			if( $compare>=$array[$i] && $compare<=$array[$i+1] )
				return true;
		}
		return false;
	};

	for($i=2;$i<=100;$i+=2)
		$two_pair_as_range_compare($a, $i);

	$time_end = microtime(true);

	$time['for_loop'] += $time_end - $time_start;
}

// array_chunk
for($c=1;$c<=10;$c++){
	$time_start = microtime(true);

	// for loop
	for($i=1;$i<=100;$i+=2)
		$a[]=$i;

	$two_pair_as_range_compare = function($array, $compare){
		$range = array_chunk($array,2);
		foreach($range as $eq){
			if( $compare>=$eq[0] && $compare<=$eq[1] )
				return true;
		}
		return false;
	};

	for($i=2;$i<=100;$i+=2)
		$two_pair_as_range_compare($a, $i);

	$time_end = microtime(true);

	$time['array_chunk'] += $time_end - $time_start;
}

// while floor
for($c=1;$c<=10;$c++){
	$time_start = microtime(true);

	// for loop
	for($i=1;$i<=100;$i+=2)
		$a[]=$i;

	$two_pair_as_range_compare = function($a, $b){
		$cc = 0;
		while(1){
		  if( floor($a[$cc]) && floor($a[$cc+1]) ){
			if( floor($a[$cc]) < $b && $b < floor($a[$cc+1]) ){
			  return true; //echo '找到('.$a[$cc].'-'.$a[$cc+1].')';
			}
		  }else{ return false; break;}
		  $cc=$cc+1;
		}
	};

	for($i=2;$i<=100;$i+=2)
		$two_pair_as_range_compare($a, $i);

	$time_end = microtime(true);

	$time['while_floor'] += $time_end - $time_start;
}

// while array_slice
for($c=1;$c<=10;$c++){
	$time_start = microtime(true);

	// for loop
	for($i=1;$i<=100;$i+=2)
		$a[]=$i;

	$two_pair_as_range_compare = function($array, $element){
		$cnt = 0;
		while(($pair = array_slice($array,$cnt,2)) && (count($pair) === 2)){
			$cnt += 2;
			if($pair[0] <= $element && $pair[1] >= $element){
				return true;
			}
		}
		return false;
	};

	for($i=2;$i<=100;$i+=2)
		$two_pair_as_range_compare($a, $i);

	$time_end = microtime(true);

	$time['while_array_slice'] += $time_end - $time_start;
}

print_r($time);exit;
exit;