55

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?

Gal
  • 21,977
  • 32
  • 95
  • 117

5 Answers5

80

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');
Josh Davenport-Smith
  • 5,391
  • 2
  • 26
  • 40
Pekka
  • 431,103
  • 135
  • 960
  • 1,075
16

Use the splice function to solve this.

Tim
  • 2,377
  • 1
  • 21
  • 30
Ben Fransen
  • 10,766
  • 16
  • 72
  • 128
8

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!

6

You can use the splice function:

http://php.net/manual/en/function.array-splice.php

Tim
  • 2,259
  • 18
  • 16
0

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.

Dan Bray
  • 6,447
  • 3
  • 47
  • 62