459 Stimmen

Wie man sowohl Wert als auch Schlüssel in ein PHP-Array einfügt

Schauen Sie sich diesen Code an:

$GET = array();    
$key = 'one=1';
$rule = explode('=', $key);
/* array_push($GET, $rule[0] => $rule[1]); */

Ich suche etwas Ähnliches wie das hier, damit:

print_r($GET);
/* output: $GET[one => 1, two => 2, ...] */

Gibt es eine Funktion, um das zu tun? (weil array_push auf diese Weise nicht funktioniert)

963voto

Pekka Punkte 429407

Nein, es gibt kein array_push()-Äquivalent für assoziative Arrays, weil es keine Möglichkeit gibt, den nächsten Schlüssel zu bestimmen.

Du musst verwenden

$arrayname[indexname] = $value;

0 Stimmen

Wie füge ich mehrere Schlüssel und Werte zu einem Array hinzu? Zum Beispiel habe ich [indexname1] = $value1 und [indexname2] = $value2 und ich möchte sie zu $arrayname hinzufügen.

13 Stimmen

@KingGoeks $arrayname = array('indexname1' => $value1, 'indexname2' => $value2); würde sie als einzige Elemente in $arrayname setzen. Wenn Sie bereits $arrayname gesetzt haben und seine Werte behalten möchten, versuchen Sie $arrayname += $anotherarray. Beachten Sie, dass vorhandene Schlüssel im ersten Array vom zweiten überschrieben werden würden.

2 Stimmen

"Beachten Sie, dass vorhandene Schlüssel im ersten Array vom zweiten überschrieben würden" das ist nicht richtig, das erste Array hat Vorrang. Wenn Sie $a = array("name" => "John"); $a += array("name" => "Tom"); machen, dann wird $a["name"] "John" sein.

102voto

deceze Punkte 489288

Das Drücken eines Werts in ein Array erstellt automatisch einen numerischen Schlüssel dafür.

Beim Hinzufügen eines Schlüssel-Wert-Paares zu einem Array haben Sie bereits den Schlüssel, es ist nicht notwendig, dass einer für Sie erstellt wird. Das Drücken eines Schlüssels in ein Array ergibt keinen Sinn. Sie können nur den Wert des spezifischen Schlüssels im Array setzen.

// kein Schlüssel
array_push($array, $value);
// dasselbe wie:
$array[] = $value;

// Schlüssel bereits bekannt
$array[$key] = $value;

88voto

Charlie Schliesser Punkte 7322

Sie können den Vereinigungsoperator (+) verwenden, um Arrays zu kombinieren und die Schlüssel des hinzugefügten Arrays beizubehalten. Zum Beispiel:

 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;

print_r($arr3);

// gibt aus:
// array(
//   'foo' => 'bar',
//   'baz' => 'bof',
// );

Sie könnten also $_GET += array('one' => 1); verwenden.

Weitere Informationen zur Verwendung des Vereinigungsoperators vs array_merge finden Sie in der Dokumentation unter http://php.net/manual/en/function.array-merge.php.

6 Stimmen

Der grundlegende Unterschied zwischen array_merge() und dem +-Operator besteht darin, dass der +-Operator den Wert aus dem zweiten Array ignoriert, wenn die beiden Arrays Werte mit demselben Schlüssel enthalten (nicht überschreibt). Außerdem werden die numerischen Schlüssel nicht neu nummeriert / neu indiziert...

64voto

AlexioVay Punkte 3692

Ich frage mich, warum die einfachste Methode noch nicht gepostet wurde:

$arr = ['firma' => 'Apple', 'produkt' => 'iPhone'];
$arr += ['version' => 8];

2 Stimmen

Es ist nicht genau das Gleiche, bei array_merge gewinnt das Array auf der rechten Seite bei Schlüsselkonflikten, bei " += " gewinnt das Array auf der linken Seite

0 Stimmen

@santiagoarizti Was meinst du mit "gewinnt"?

2 Stimmen

Wenn zwei Arrays denselben Schlüssel haben, verhalten sich array_merge und Array-Union (+=) auf entgegengesetzte Weise, d.h. array_merge respektiert den Wert aus dem zweiten Array und die Array-Union respektiert den Wert aus dem ersten Array.

25voto

Nassim Punkte 2647

Ich möchte meine Antwort zur Tabelle hinzufügen und hier ist sie :

//Verbindung zur Datenbank herstellen ...etc
$result_product = /*Ihre MySQL-Abfrage hier*/ 
$array_product = array(); 
$i = 0;

foreach ($result_product as $row_product)
{
    $array_product [$i]["id"]= $row_product->id;
    $array_product [$i]["name"]= $row_product->name;
    $i++;
}

//Sie können das Array als JSON codieren, wenn Sie es an einen Ajax-Aufruf senden möchten
$json_product =  json_encode($array_product);
echo($json_product);

Hoffentlich wird das jemandem helfen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X