2016-12-04 7 views
1

配列が除去されるべき第3の要素の反復毎にその後この1つの要素だけが残り、その要素が印刷されるまで、php配列内のすべての3番目の要素を削除するには?それは単一の要素</p> <p>に達するまで

$a = array(1,2,3,4,5,6,7,8); 

に似て反復この

指標のようなものであろう:0 1 2 3 4 5 6 7

値:1 2 3 4 5 6 7 8
これは正常な

あります10

度:0 1 2 3 4 5 6 7

値:1 2 3 4 5ここで7~8
3,6 6はそれを除去した後、彼らはその後、第3要素として

を出てきたように除去第1と第2として7と8を数え、値1に移動して1を3番目の要素にする必要があります。これは要素が1つだけ残るまで続きます。

出力

12345678 

1245678 

124578 

24578 

2478 

478 

47 

7 

7は、残りの要素

+2

あなたが最初の要素を削除するには、この場所であなたの豊かに '2478'まで、第三の除去....あなたのサンプルの真ん中にあなたのアルゴリズムを変更する...することができますが、もっと説明して??? –

+0

は2478で7までだったので、782を除いて2を取り除く –

+0

正確には... 2478では5が最後に削除されてから7が1と8が2になり、次に2が3になります2を削除します。 –

答えて

1

ここにコードがあります。

<?php 
$array = [1,2, 3,4,5,6,7,8]; 

function removeAtNth($array, $nth) 
{ 
    $step = $nth - 1;  //gaps between operations 
    $benchmark = 0;  
    while(isset($array[1])) 
    { 
     $benchmark += $step; 
     $benchmark = $benchmark > count($array) -1 ? $benchmark % count($array) : $benchmark; 
     echo $benchmark."\n"; 
     unset($array[$benchmark]); 
     $array = array_values($array); 
     echo implode('', $array)."\n"; 
    } 
} 

removeAtNth($array, 3); 

結果:

[email protected]:~$ php test.php 
1245678 
124578 
24578 
2478 
478 
47 
7 
+0

、私の喜び! –

1

あなたが今array_chunk()

$a = array(1,2,3,4,5,6,7,8); 
$thirds = array_chunk($a, 3); 

$三分のを探しては次のようです。そして、

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

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

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

だけループ$ 3の配列で最後の値を取得するにはarray_pop()を使用します。

しかし、私はあなたがなぜ最後に7を得ようとしているのか分かりません。あなたは説明できますか?

+0

at 2478 ... 2が除外され、478が取得されます。2が最後に取り除かれた番号です.4として1,7として、2として8、3として8が削除されます。残りの47 ...最後に8が削除されてから4は1になります。7は2になります.3は4になります.4は削除され、7は残ります。 –

関連する問題