2013-09-28 77 views
1

我有以下数字数组($ data),我想将它分成两个数组(range1和2)。阵列的分割序列号

我只是不会提前,因为你可以看到。有人可以给我一个提示,我如何解决这个问题?

$data = array(16,17,18,19,20,23,24,25,26); 

$range1 = array(); 
$range2 = array(); 

$firstday = reset($data); 
$lastday = end($data); 

for($x = $firstday;$x <= $lastday; $x++){ 
    if($firstday == $x){ 
     $range1 =.$x;  
    } 
    elseif($x - $firstday == 1){ 
     $range2 =.$x; 
    } 
} 

Output must be array(16,17,18,19,20); array(23,24,25,26); 
+2

入住这里http://php.net/manual/en/function .array-slice.php。此外,这看起来不正确'$ range1 =。 $ x'。你的意思是'$ range [] = $ x'? – elclanrs

+0

你需要什么条件来拆分它们? – Deepak

+0

我正在尝试制作日历,并且$ data数组中的日期是占用的数据。所以这些是2个时期,我想制作2个阵列。 – Bas

回答

3
$data = array(16,17,18,19,20,23,24,25,26); 
    $output1 = array_slice($data, 0, 5); 
    $output2 = array_slice($data, 5, 4); 
+0

是的,它!但我如何追踪数字5和4? – Bas

+0

浏览PHP手册,看到这里http://php.net/manual/en/function.count.php – elclanrs

+0

这里第二个参数是偏移量和第三个参数是长度&只要看看http://php.net /manual/en/function.array-slice.php也告诉@elclanrs –

0

通过@Jenson中号约翰用同样的方法,

得到阵列的一半

$count = count($data); 
$output1 = array_slice($data, 0, ceil($count/2)); 
$output2 = array_slice($data, ceil($count/2), $count-(ceil($count/2))); 
+0

对不起我快。如果你有两个时期,这将起作用。但是如果数组是数组(1,2,3,5,6,7,25,26,28);? – Bas

+0

@Bas上述数组的预期输出是什么? – Shafeeque

+0

对不起这个数组(1,2,3,5,6,7,25,26,28);必须是数组(1,2,3,5,6,7,25,26,27,28); $ output1 = array(1,2,3); $ output2 = array(5,6,7); $ output3 = array(25,26,27,28); – Bas