2016-04-05 17 views
0

配列の最後の3要素を移動して最初の3要素にしようとしています。これは可能ですか?配列は、あなたがにしているどのページに応じて可変であるが、それはこのようなものになります。最後の3つの要素をPHP配列から最初の3つに移動します

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

をし、私はそれをする必要があります

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

任意の助けをいただければ幸いです。配列の長さもページごとに異なるので、私はそれについてどうやって行くのか100%確信していません。

+3

ポップと追加し、これらの3つの項目を一時的な配列にし、それらを付加するために()するarray_unshiftを使用してみてくださいを。 – NoImaginationGuy

+1

ちょうど親切なヒント、このページを読むことができます:[How-To-Ask Guide](https://stackoverflow.com/help/how-to-ask)可能な限り簡単に答えることができます。あなたが抱えている問題を修正するためにあなたがした努力と、それらの修正を試みたときに何が起こったのかを必ず含めてください。あなたのコードやエラーメッセージも忘れないでください! –

答えて

1

array_splice()は、配列内の要素のシーケンスを抽出して挿入するために使用されます。

array_splice($array, 0, 0, array_splice($array, -3)); 

array_splice($array, -3)配列の最後の3つの要素を除去し、アレイとしてそれを返します。次にarray_splice($array, 0, 0, <that>)は配列の先頭にその配列を挿入します。

これは、連想配列のキーを保持していないことに注意してください。これは、あなたの例で必要と思われます。そのために、あなたは(OP例に係るケースのように思わとして)array_splice doesntのは、数字キーを保存することdocumentation notes

function array_rotate($array, $shift) { 
    if(!is_array($array) || !is_numeric($shift)) { 
     if(!is_array($array)) error_log(__FUNCTION__.' expects first argument to be array; '.gettype($array).' received.'); 
     if(!is_numeric($shift)) error_log(__FUNCTION__.' expects second argument to be numeric; '.gettype($shift)." `$shift` received."); 
     return $array; 
    } 
    $shift %= count($array); //we won't try to shift more than one array length 
    if($shift < 0) $shift += count($array);//handle negative shifts as positive 
    return array_merge(array_slice($array, $shift, NULL, true), array_slice($array, 0, $shift, true)); 
} 
+0

ありがとうございます!それは働いた:) –

+1

@LeanneSeawrightそれはキーを保持しません。私はそうする機能を追加しました。 – Barmar

2

ノートに定義されてarray_rotate機能を使用することができます。あなたがいることが必要な場合は、これはあまりにも動作します:

$array1 = array 
(
    4 => 1, 
    2 => 2, 
    3 => 6, 
    5 => 9, 
    0 => 10, 
    1 => 11 
); 

$array2 = array_slice($array1, -3, 3, true) + $array1; 

と$配列2は次のようになります。

Array 
(
    [5] => 9 
    [0] => 10 
    [1] => 11 
    [4] => 1 
    [2] => 2 
    [3] => 6 
) 
関連する問題