Wie füge ich einem leeren Array in PHP Elemente hinzu?

488

Wenn ich ein Array in PHP definiere wie (ich definiere seine Größe nicht):

$cart = array();

Füge ich einfach Elemente hinzu, indem ich Folgendes verwende?

$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;

Haben Arrays in PHP beispielsweise keine Add-Methode cart.add(13)?

AquinasTub
quelle

Antworten:

802

Beides array_pushund die von Ihnen beschriebene Methode funktionieren.

$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>";

Ist das gleiche wie:

<?php
$cart = array();
array_push($cart, 13);
array_push($cart, 14);

// Or 
$cart = array();
array_push($cart, 13, 14);
?>
Bart S.
quelle
178
Wie in der PHP-Dokumentation angegeben, ist es am besten, die $cart[] = 13Methode nicht nur zu verwenden, wenn Sie jedes Mal nur ein einzelnes Element (wie in einer Schleife) oder ein einzelnes Element drücken , sondern auch, weil weniger Zeichen für dieselbe Operation erforderlich sind legt auch keinen Leistungsaufwand für einen Funktionsaufruf fest, den array_push () verursachen würde. Edit: Aber tolle Antwort. Tatsächlich das Gleiche, und die meisten Anwendungen bemerken nicht einmal einen Leistungsunterschied, helfen jedoch, diese Nuancen zu kennen.
Mattygabe
67
Ist es nur ich oder sieht die $cart[]=...Syntax auf den ersten Blick wie eine Variablenzuweisung und nicht wie ein impliziter array_push aus?
Brad Hein
6
Das tut es mir definitiv. Es würde mir nichts ausmachen, zu erklären, warum es keine Aufgabe ist.
Limeandcoconut
4
$ cart [] = 13; ist schneller. hat weniger Zeichen und sieht besser aus.
Gal Bracha
19
Ich werde nur meine alternative Sichtweise anbieten, dass es für andere Sprachprogrammierer SEHR verwirrend ist, die Syntax von cart [] = ... zu lesen. Ich habe Erfahrung mit vielen Sprachen und ich würde nie vermuten, dass dies der Fall ist.
Erti-Chris Eelmaa
75

Es ist besser, nicht das zu verwenden array_push, was Sie vorgeschlagen haben. Die Funktionen erhöhen nur den 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';
OIS
quelle
11
"Wenn Sie einem Array in einer Schleife mehrere Werte hinzufügen, ist es schneller, array_push zu verwenden als wiederholte [] = Anweisungen" php.net/manual/en/function.array-push.php#84959
Ollie Glass
3
Absolut korrekt, wenn Ihr Anwendungsfall einen oder mehrere Artikel einzeln hinzufügt. Wenn alle Werte gleichzeitig bekannt sind, ist es wahrscheinlich am besten, nur die Array_push-Notation zu verwenden, je nachdem, wie viele Elemente hinzugefügt werden müssen. Die zusätzlichen Zeichen, die durch das erneute Eingeben des Array-Namens jedes Mal entstehen, können die Leistung beeinträchtigen als der Funktionsaufruf über Kopf. Wie immer sollte bei der Auswahl ein Urteil gefällt werden. Gute Antworten!
Mattygabe
2
Diese Antwort ist die vollständigste.
Lokiare
10

Sie können array_push verwenden . Es fügt die Elemente wie in einem Stapel am Ende des Arrays hinzu.

Du hättest es auch so machen können:

$cart = array(13, "foo", $obj);
und ich
quelle
10

Nach meiner Erfahrung ist Ihre Lösung in Ordnung (am besten), wenn Schlüssel nicht wichtig sind:

$cart = [];
$cart[] = 13;
$cart[] = "foo";
$cart[] = obj;
fico7489
quelle
2

Denken Sie daran, diese Methode überschreibt das erste Array. Verwenden Sie sie daher nur, wenn Sie sicher sind!

$arr1 = $arr1 + $arr2;

( siehe Quelle )

T.Todua
quelle
1
Warum die Ablehnung, kann jemand erklären, warum das schlecht ist? ist es unsicher?
Sandy
4
@ SandyBeach es ist keine Antwort
mateos
2
$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>";
unpluggeDloop
quelle
$ cart [] = $ i; - dieser Teil des Codes fügt dem Array Elemente hinzu ----> $ cart = [$ i]; - Dies wird Compiler passieren, aber Sie werden nicht bekommen, was Sie wollen
unpluggeDloop
0
$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"[email protected]"));
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>";
}
Isuru Eshan
quelle
-1

Wenn Elemente mit einer auf Null basierenden Elementindizierung hinzugefügt werden sollen, funktioniert dies vermutlich auch:

// 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';
Gestix-Team
quelle