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)?

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);
?>

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';

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);

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;

2

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

$arr1 = $arr1 + $arr2;

( siehe 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>";

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

-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';
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.