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.