2016-07-14 6 views
0

私は動的長さL1の配列を持っています。私はこの配列を元々の配列からそれぞれLEN[i]個の番号を持つL2個の配列に分割する必要があります。配列を複数の配列に分割する

EX: 
Original: 

$array=[1,2,3,4,5,6,7,8,9,10] 

Here L1=10 

L2=3 

$LEN=[3,3,4] 

So the 3 arrays will be 

$a1=[1,2,3] 

$a2=[4,5,6] 

$a3=[7,8,9,10] 

私は多くの方法を試しましたが、何も動作していないようです。 ご協力いただければ幸いです。

+0

あなたが試したことを私たちに教えてください。 –

+1

array_chunk https://php.net/manual/en/function.array-chunk.phpはほとんどあなたをそこに連れて行きます。 – Progrock

+1

あなたの試みを投稿する –

答えて

3

あなたはチャンクのように変数配列の長さが必要な場合は、あなたが

$array=[1,2,3,4,5,6,7,8,9,10]; 

$arr = [3,3,4]; 
$result_arr = []; 
foreach($arr as $k => $v){ 
    $result_arr[$k] = array_splice($array,0,$v); 
} 
print_R($result_arr); 

出力のような簡単なforeacharray_spliceなどを使用して、独自の機能を作成することができます

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

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

    [2] => Array 
     (
      [0] => 7 
      [1] => 8 
      [2] => 9 
      [3] => 10 
     ) 

) 
+0

ありがとう!!これは機能します。 result_arrの個々の要素にどのようにアクセスできますか? –

+0

ここでは最も簡単なことは –

+0

で、 'echo $ result_arr [0] [0];'などで値にアクセスできます。 –

1
<?php 

$input  = range(1,11); 
$chunk_size = 3; 
$output  = array_chunk($input, $chunk_size); 

// If we can't chunk into equal sized parts merge the last two arrays. 
if(count($input) % $chunk_size) { 
    $leftovers = array_pop($output); 
    $last  = array_pop($output); 
    array_push($output, array_merge($last, $leftovers)); 
} 

var_export($output); 

出力は、 :

array (
    0 => 
    array (
    0 => 1, 
    1 => 2, 
    2 => 3, 
), 
    1 => 
    array (
    0 => 4, 
    1 => 5, 
    2 => 6, 
), 
    2 => 
    array (
    0 => 7, 
    1 => 8, 
    2 => 9, 
    3 => 10, 
    4 => 11, 
), 
) 
関連する問題