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.
You can refer to the PHP manual, but for now I will explain the difference like this:
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
)
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
)
array_push() adds each argument to the array:
array_push($array1, $array2);
//is the same as
$array1[] = $array2;
This will create a multidimensional array, which I don't think is what you want. Array merge just puts them together to make one big array, which I think is what you're after. To get the same effect with array_push(), you'd have to do this:
//assuming $array2 has 4 elements
array_push($array1, $array2[0], $array2[1], $array2[2], $array2[3]);
//is the same as
$array1 = array_merge($array1, $array2);
//is the same as
$array1[] = $array2[0];
$array1[] = $array2[1];
$array1[] = $array2[2];
$array1[] = $array2[3];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With