1

ロジックは、すべての要素が削除されたときに、特定の間隔の後に要素から最後の要素を取得することです。5 人のユーザーがいて、2 番目のユーザーがすべて排除されたと仮定すると、最後に残ったユーザーを見つける必要があります。

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

2 でインデックス付けされた要素を削除し、以下の形式で配列を再インデックス付けします。

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

3 に答える 3

4

を使用できますが、再インデックスを強制するunset()ために呼び出す必要もあります。array_values()例えば:

unset($foo[2]);
$foo = array_values($foo);
于 2013-09-24T10:02:55.763 に答える
1

元の質問は少し不明確です。インデックス X を削除し、インデックス X の後のすべてのアイテムを配列の最初のアイテムとして配置することを理解しました。

$index2remove = 2;
$newArray1 = array_slice($foo, $index2remove+1); // Get items after the selected index
$newArray2 = array_slice($foo, 0, $index2remove); // get everything before the selected index

$newArray = array_merge($newArray1, $newArray2); // and combine them

または、より短く、メモリ消費量が少し少なくなります (ただし、読みにくくなります):

$index2remove = 2;
$newArray = array_merge(
                array_slice($foo, $index2remove+1),  // add last items first
                array_slice($foo, 0, $index2remove) // add first items last
             );

私のコードで値2を設定解除する必要はありません。単純にスライスしてください。これは、2 番目の splice 関数の -1 で行います。

$newArray = array_merge()必要に応じて、に置き換えることができますが$foo = array_merge()、元の配列を保存する必要がない場合は、2 番目にのみです。

編集:小さなエラーを変更しました、プレーンジェーンに感謝します

于 2013-09-24T11:36:12.507 に答える