やりたくないことの 1 つは、配列内のすべてのキーが数値であり、各要素のオフセットを正確に表していると想定することです。PHP 配列は従来の配列とは異なるため、これは誤りです。配列キーは要素のオフセットではなく (つまり、要素の順序を決定するものではありません)、数値である必要はありません。
残念ながら、PHP 配列は従来の配列ではなく、順序付けられたハッシュマップであるため、マップの途中に新しい要素を挿入する唯一の方法は、まったく新しいマップを作成することです。
これを行うには、PHP のarray_chunk()関数を使用します。この関数は、入力配列から指定された数までの要素をそれぞれ含む要素の新しい配列を作成します。したがって、配列の配列または要素のチャンクを作成します。このようにして、チャンクを反復処理して新しい配列に追加し、目的の効果を得ることができます。
$names = array( "Ayush" , "Vaibhav", "Shivam", "Hacker", "Topper",
"ABCD", "NameR", "Tammi", "Colgate", "Britney",
"Bra", "Kisser");
$addthis = "ADDTHIS";
$result = array();
foreach (array_chunk($names, 3) as $chunk) { // iterate over each chunk
foreach ($chunk as $element) {
$result[] = $element;
}
// Now push your extra element at the end of the 3 elements' set
$result[] = $addthis;
}
キーも保存したい場合は、これを行うことができます....
$names = array( "Ayush" , "Vaibhav", "Shivam", "Hacker", "Topper",
"ABCD", "NameR", "Tammi", "Colgate", "Britney",
"Bra", "Kisser");
$addthis = "ADDTHIS";
$result = array();
foreach (array_chunk($names, 3, true) as $chunk) { // iterate over each chunk
foreach ($chunk as $key => $element) {
$result[$key] = $element;
}
// Now push your extra element at the end of the 3 elements' set
$result[] = $addthis;
}
これにより、要素の順序と各要素のキーの両方が維持されます。ただし、キーを気にしない場合は、単純に最初の例を使用できます。この例で追加された要素は、次に利用可能な数字キーを想定しているため (したがって、次の反復で上書きされます)、順番に数字キーを使用すると、2 番目のアプローチで問題が発生することに注意してください。