[ create a new paste ] login | about

Link: http://codepad.org/5WlKFKfz    [ raw code | output | fork ]

tomauger - PHP, pasted on Aug 31:
<?php
/**
	 * Inserts any number of scalars or arrays at the point
	 * in the haystack immediately after the search key ($needle) was found,
	 * or at the end if the needle is not found or not supplied.
	 * Modifies $haystack in place.
	 * @param array &$haystack the associative array to search. This will be modified by the function
	 * @param string $needle the key to search for
	 * @param mixed $stuff one or more arrays or scalars to be inserted into $haystack
	 * @return int the index at which $needle was found
	 */	 	 	 	  	 	 	
	function array_insert_after(&$haystack, $needle = '', $stuff){
		if (! is_array($haystack) ) return $haystack;

		$new_array = array();
		for ($i = 2; $i < func_num_args(); ++$i){
			$arg = func_get_arg($i);
			if (is_array($arg)) $new_array = array_merge($new_array, $arg);
			else $new_array[] = $arg;
		}
		
		$i = 0;
		foreach($haystack as $key => $value){
			++$i;
			if ($key == $needle) break;
		}
		
		$haystack = array_merge(array_slice($haystack, 0, $i, true), $new_array, array_slice($haystack, $i, null, true));

		return $i;
	}

$array_1 = array (
  'one' => 1,
  'two' => 2,
  'three' => 3,
  'four' => 4,
  'five' => 5,
  'six' => 6,
  'seven' => 7,
  'eight' => 8,
  'nine' => 9
);

$array_2 = array (
  'alpha' => 1,
  'bravo' => 2,
  'charlie' => 3,
  'delta' => 4,
  'echo' => 5
);

$array_3 = array (
  'alef' => 1,
  'bet' => 2,
  'gimel' => 3,
  'dalet' => 4
);

$offset = array_insert_after($array_1, 'three', $array_2, 'xyz', $array_3);
print_r($array_1);


Output:
Array
(
    [one] => 1
    [two] => 2
    [three] => 3
    [alpha] => 1
    [bravo] => 2
    [charlie] => 3
    [delta] => 4
    [echo] => 5
    [0] => xyz
    [alef] => 1
    [bet] => 2
    [gimel] => 3
    [dalet] => 4
    [four] => 4
    [five] => 5
    [six] => 6
    [seven] => 7
    [eight] => 8
    [nine] => 9
)


Create a new paste based on this one


Comments: