Insert into array at a specified place
array:
A-B-C-D-E-F
J is the son of C. update array so:
A-B-C-J-D-E-F
how do I insert J after C in the array?
I also map the array in a loop (array of comments for display). Will this method take a very long time开发者_开发技巧 to perform?
You can use array_splice() with $length set to 0.
http://de.php.net/manual/en/function.array-splice.php
Example:
$arr_alphabet = array('a', 'b', 'd');
array_splice($arr_alphabet, 2, 0, 'c');
// $arr_alphabet is now: array('a', 'b', 'c', 'd');
Use the splice function to solve this.
For those who run into problems ... I found that @Pekka's solution ended up returning a NULL array because array_splice returns the array consisting of the extracted elements (http://de.php.net/manual/en/function.array-splice.php).
It would be more accurate as follows:
$arr_alphabet = array('a', 'b', 'd');
array_splice($arr_alphabet, 2, 0, 'c');
print_r($arr_alphabet);
Returns:
Array ( [0] => a [1] => b [2] => c [3] => d )
But thanks @Pekka for getting me 95% of the way there!
You can use the splice function:
http://php.net/manual/en/function.array-splice.php
I wrote a function to insert into an array at a specified index:
function array_insert(&$arr, $index, $val)
{
if (is_array($val))
array_splice($arr, $index, 0, [$index => $val]);
else
array_splice($arr, $index, 0, $val);
}
It will also work for multidimensional arrays but only with a numerical key.
精彩评论