2013-12-18 223 views
0

下面是一个例子阵列我想分割:PHP分裂阵列复制

(1,2,3,4,5,0,6,7,0,8,9,10,11,12,0) 

如何在3个数组这样拆呢?

(1,2,3,4,5,0) (6,7,0) (8,9,10,11,12,0) 
+2

这不是明显的从你的问题......为什么不把它拆分的地方呢? –

+1

是的,请提供一些更多的信息,你的问题没有显示任何重复值分裂? – Kyle

+0

重复部分在哪里? – Rezigned

回答

1

以下是解决方案。 (作者说,他希望在“0”分裂,而不是重复的值)

function split_array_by_duplicate_values($a, $duplicate = 0) 
{ 
    $c = array_intersect($a, array($duplicate)); 
    $r = array(); 
    $i = 0; 
    foreach($c as $k => $v) { 
     $l = ++$k - $i; 
     $r[] = array_slice($a, $i, $l); 
     $i = $k; 
    } 

    return $r; 
} 

$a = array(1,2,3,4,5,0,6,7,0,8,9,10,11,12,0); 

print_r(split_array_by_duplicate_values($a)); 

回报

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
      [3] => 4 
      [4] => 5 
      [5] => 0 
     ) 

    [1] => Array 
     (
      [0] => 6 
      [1] => 7 
      [2] => 0 
     ) 

    [2] => Array 
     (
      [0] => 8 
      [1] => 9 
      [2] => 10 
      [3] => 11 
      [4] => 12 
      [5] => 0 
     ) 

) 
+0

看起来不错,但是当我复制粘贴时,我有空白浏览器......任何错误? – Hahm

+0

我忘了把''return''语句,我的坏。你能再试一次吗? – Rezigned

+0

WoW .... GREAT ... thanx为您的解决方案..... – Hahm

0

试试这个:

$array = array(1, 2, 3, 0, 4, 5, 6); 

$array_0 = array_splice($array, 0, 4); 
$array_1 = array_splice($array, 4); 
0

我想你要寻找的是array_splice

$array=array(1,2,3,0,4,5,6); 
$newarray=array_splice($array,4); 
print_r($array); //Array ([0] => 1 [1] => 2 [2] => 3 [3]=>0); 
print_r($newarray); //Array([0]=>4 [1]=>5 [2]=>6) 

如果你想在一个多维数组的数组分成两个数组,你可以做

$array=array(1,2,3,0,4,5,6); 
$newarray=array_chunk($array,4); //returns [[1,2,3,0],[4,5,6]] 
0

您应该使用数组拆分拆分数组,你想

<?php 
$input = array("a", "b", "c", "d", "e"); 

$output = array_slice($input, 2);  // returns "c", "d", and "e" 
$output = array_slice($input, -2, 1); // returns "d" 
$output = array_slice($input, 0, 3); // returns "a", "b", and "c" 

// note the differences in the array keys 
print_r(array_slice($input, 2, -1)); 
print_r(array_slice($input, 2, -1, true)); 
?>