2014年11月29日21:01:01
场景:有的时候查询数据库的select in 语句中会有非常多不连续的数值,会很影响查询效率
方法:将select in 查询转换成多个select between and 语句
代码:核心代码(id要排过顺序)
1 public function group() 2 { 3 // $a = array(1,2,3,5,7,8,9); 4 $a = array(1,3,4,5,7,8,9); 5 $len = count($a); 6 $cur = 0; //当前遍历元素的下标 7 $pre = $a[0]; //前一个元素的值 8 9 $new = array(‘0‘ => array($a[0])); 10 for ($i = 1; $i < $len; $i++) { 11 if (($a[$i] - $pre) == 1 ) { 12 $new[$cur][] = $a[$i]; 13 } else { 14 $cur = $i; 15 $new[$cur][] = $a[$i]; 16 } 17 $pre = $a[$i]; 18 } 19 20 print_r($new); 21 }
//结果
1 Array 2 ( 3 [0] => Array 4 ( 5 [0] => 1 6 ) 7 8 [1] => Array 9 ( 10 [0] => 3 11 [1] => 4 12 [2] => 5 13 ) 14 15 [4] => Array 16 ( 17 [0] => 7 18 [1] => 8 19 [2] => 9 20 ) 21 22 )
时间: 2024-10-23 20:42:56