您不想做的一件事是假设数组中的每个键都是数字的,并且它准确地表示每个元素的偏移量。这是错误的,因为 PHP 数组不像传统数组。数组键不是元素的偏移量(即它不决定元素的顺序),也不一定是数字。
不幸的是,PHP 数组是有序的 hashmap,而不是传统的数组,所以在 map 中间插入新元素的唯一方法是创建一个全新的 map。
您可以使用 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;
}
这保留了元素的顺序以及每个元素的键。但是,如果您不关心密钥,则可以简单地使用第一个示例。请注意,按顺序排列的数字键会导致第二种方法出现问题,因为此示例中的附加元素假定下一个可用的数字键(因此在下一次迭代中被覆盖)。