If I define an array in PHP such as (I don't define its size):
$cart = array();
Do I simply add elements to it using the following?
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;
Don't arrays in PHP have an add method, for example, cart.add(13)
?
Both array_push
and the method you described will work.
$cart = array();
$cart[] = 13;
$cart[] = 14;
// etc
//Above is correct. but below one is for further understanding
$cart = array();
for($i=0;$i<=5;$i++){
$cart[] = $i;
}
echo "<pre>";
print_r($cart);
echo "</pre>";
Is the same as:
<?php
$cart = array();
array_push($cart, 13);
array_push($cart, 14);
// Or
$cart = array();
array_push($cart, 13, 14);
?>
It's better to not use array_push
and just use what you suggested. The functions just add overhead.
//We don't need to define the array, but in many cases it's the best solution.
$cart = array();
//Automatic new integer key higher than the highest
//existing integer key in the array, starts at 0.
$cart[] = 13;
$cart[] = 'text';
//Numeric key
$cart[4] = $object;
//Text key (assoc)
$cart['key'] = 'test';
array_push()
has a return value, whereas the others do not. Perhaps this is the/one reason for its overhead? It seems to be a consensus to use the other methods, unless you need that return value. 2) If you need elements to be added to the end of the array, use either array_push()
or +=
method of concatenation (not shown in this answer), or $cart[] = 13
methods. Using the named/numeric key method ($cart[4] = $object
and $cart['key'] = 'test'` methods do not guarantee the element will be added to the end of the array, only that it will be in the array.
Based on my experience, solution which is fine(the best) when keys are not important:
$cart = [];
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;
You can use array_push. It adds the elements to the end of the array, like in a stack.
You could have also done it like this:
$cart = array(13, "foo", $obj);
$cart = array();
$cart[] = 11;
$cart[] = 15;
// etc
//Above is correct. but below one is for further understanding
$cart = array();
for($i = 0; $i <= 5; $i++){
$cart[] = $i;
//if you write $cart = [$i]; you will only take last $i value as first element in array.
}
echo "<pre>";
print_r($cart);
echo "</pre>";
REMEMBER, this method overwrites first array, so use only when you are sure!
$arr1 = $arr1 + $arr2;
$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"isuru.eshan@gmail.com"));
echo "<pre>";
echo json_encode($products_arr,JSON_PRETTY_PRINT);
echo "</pre>";
//OR
$countries = array();
$countries["DK"] = array("code"=>"DK","name"=>"Denmark","d_code"=>"+45");
$countries["DJ"] = array("code"=>"DJ","name"=>"Djibouti","d_code"=>"+253");
$countries["DM"] = array("code"=>"DM","name"=>"Dominica","d_code"=>"+1");
foreach ($countries as $country){
echo "<pre>";
echo print_r($country);
echo "</pre>";
}
When one wants elements to be added with zero-based element indexing, I guess this will work as well:
// adding elements to an array with zero-based index
$matrix= array();
$matrix[count($matrix)]= 'element 1';
$matrix[count($matrix)]= 'element 2';
...
$matrix[count($matrix)]= 'element N';
Success story sharing
$cart[] = 13
method not only because it's less characters to do the same operation, but it also doesn't impose the performance overhead of a function call, which array_push() would. Edit: But, great answer. Effectively the same, and majority of uses won't even notice a performance difference, but helps to know those nuances.$cart[]=...
syntax, at first glance, look like a variable assignment and not an implicit array_push?