2013-12-18 2 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)); 
?> 
Смежные вопросы