I am adding these two elements into a new array using these two functions array_push()
and array_merge()
.
$a1 = array(); $a2 = 'foo'; echo '<pre>'; print_r( array_merge($a1, (array)$a2) ); echo '</pre>';
And with ..
$a1 = array(); $a2 = 'foo'; array_push($a1, $a2); echo '<pre>'; print_r($a1); echo '</pre>';
all these are printing same..
Array ( [0] => foo )
Now my question is what is the main difference between these two functions in functionality based. I am new in PHP.
Advertisement
Answer
You can refer to the PHP manual, but for now I will explain the difference like this:
array_push()
Treats the array as a stack, and pushes the passed variables onto the end of the array. The length of the array increases by the number of variables pushed.
Example
$stack = array("orange" , "banana"); array_push($stack, "1", "2"); print_r($stack);
The above example will output:
Array ( [0] => orange [1] => banana [2] => 1 [3] => 2 )
array_merge()
Merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array. If the input arrays have the same string keys, then the later value for that key will overwrite the previous one.
If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended. Values in the input array with numeric keys will be renumbered with incrementing keys starting from zero in the result array.
Example
$array1 = array("color" => "yellow" , 0, 1); $array2 = array("a" , "b" , "color" => "blue" , "shape" => "rectangle", 1); $result = array_merge($array1 , $array2); print_r($result);
The above example will output:
Array ( [color] => blue [0] => 0 [1] => 1 [2] => a [3] => b [shape] => rectangle [4] => 1 )