it-swarm.com.de

Wie man Wert und Schlüssel in das Array schiebt

Sehen Sie sich diesen Code an:

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

Ich suche so etwas, dass:

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

Gibt es eine Funktion, um dies zu tun? (weil array_Push so nicht funktioniert)

285
Gal

Nein, es gibt kein array_Push()-Äquivalent für assoziative Arrays, da der nächste Schlüssel nicht ermittelt werden kann. 

Sie müssen verwenden

$arrayname[indexname] = $value;
631
Pekka 웃

Durch Drücken von a value in ein Array wird automatisch ein numerischer Schlüssel dafür erstellt.

Wenn Sie einem Array ein Schlüssel-Wert-Paar hinzufügen, haben Sie bereits den Schlüssel. Sie müssen keinen Schlüssel für Sie erstellen. Das Drücken einer Taste in ein Array ist nicht sinnvoll. Sie können nur den Wert des bestimmten Schlüssels im Array festlegen.

// no key
array_Push($array, $value);
// same as:
$array[] = $value;

// key already known
$array[$key] = $value;
65
deceze

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

<?php

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

print_r($arr3);

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

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

Weitere Informationen zur Verwendung des Union-Operators gegen array_merge finden Sie in der Dokumentation unter http://php.net/manual/de/function.array-merge.php .

51

Genau das, was Pekka gesagt hat ...

Alternativ können Sie array_merge wahrscheinlich wie folgt verwenden, wenn Sie möchten:

array_merge($_GET, array($rule[0] => $rule[1]));

Aber ich würde die Methode von Pekka wahrscheinlich vorziehen, da sie viel einfacher ist.

17
jeffff

Ich möchte meine Antwort der Tabelle hinzufügen und hier ist es:

//connect to db ...etc
$result_product = /*your mysql query here*/ 
$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++;
}

//you can encode the array to json if you want to send it to an ajax call
$json_product =  json_encode($array_product);
echo($json_product);

ich hoffe, das hilft jemandem

17
Nassim

Dies ist die Lösung, die für u nützlich sein kann

Class Form {
# Declare the input as property
private $Input = [];

# Then Push the array to it
public function addTextField($class,$id){
    $this->Input ['type'][] = 'text';
    $this->Input ['class'][] = $class;
    $this->Input ['id'][] = $id;
}

}

$form = new Form();
$form->addTextField('myclass1','myid1');
$form->addTextField('myclass2','myid2');
$form->addTextField('myclass3','myid3');

Wenn du es ablegst. Das Ergebnis ist so

array (size=3)
  'type' => 
    array (size=3)
      0 => string 'text' (length=4)
      1 => string 'text' (length=4)
      2 => string 'text' (length=4)
  'class' => 
    array (size=3)
      0 => string 'myclass1' (length=8)
      1 => string 'myclass2' (length=8)
      2 => string 'myclass3' (length=8)
  'id' => 
    array (size=3)
      0 => string 'myid1' (length=5)
      1 => string 'myid2' (length=5)
      2 => string 'myid3' (length=5)
7
Faris Rayhan

Ich suchte nur nach dem gleichen und erkannte, dass mein Denken wieder anders ist, weil ich alte Schule bin. Ich gehe zurück zu BASIC und Perl und manchmal vergesse ich, wie einfach die Dinge in PHP wirklich sind.

Ich habe diese Funktion so gemacht, dass alle Einstellungen aus der Datenbank übernommen werden, in denen es 3 Spalten gibt. setkey, item (key) & value (value) und platzieren Sie sie in einem Array namens Settings mit demselben Key/value, ohne Push wie oben zu verwenden.

Ziemlich einfach und wirklich einfach

 // Alle Einstellungen abrufen 
 $ Settings = getGlobalSettings (); 


 // Anwenderthema auswählen 
 $ Theme_choice = $ settings ['theme']; 

.. etc etc ....




 Funktion getGlobalSettings () {

 $ dbc = mysqli_connect (wds_db_Host, wds_db_user, wds_db_pass) oder die ("MySQL-Fehler:". mysqli_error ()); 
 mysqli_select_db ($ dbc, wds_db_name) oder die ("MySQL-Fehler:". mysqli_error ()); 
 $ MySQL = "SELECT * FROM SystemSettings"; 
 $ result = mysqli_query ($ dbc, $ MySQL); 
 while ($ row = mysqli_fetch_array ($ result)) 
 {
 $ settings [$ row ['item']] = $ row ['value']; // KEIN BEDARF FÜR Push 
 } 
 mysqli_close ($ dbc); 
 return $ settings; 
} 


So wie die anderen Beiträge erklären ... In php ist es nicht nötig, ein Array zu "pushen", wenn Sie es verwenden 

Schlüssel => Wert

UND ... Das Array muss auch nicht erst definiert werden. 

$ array = array ();

Sie müssen nicht definieren oder drücken. Weisen Sie einfach $ array [$ key] = $ value zu. Es ist automatisch ein Push und eine Deklaration gleichzeitig.

Ich muss hinzufügen, dass aus Sicherheitsgründen (P) oder (H) elpless (P) rotection, ich meine Programmierung für Dummies, ich meine PHP ... hehehe, ich schlage vor, dass Sie dieses Konzept nur für das verwenden, was ich beabsichtigt habe. Jede andere Methode kann ein Sicherheitsrisiko darstellen. Dort machte mein Haftungsausschluss!

7
Cory Cullers

Ein bisschen komisch, aber das hat für mich funktioniert

    $array1 = array("Post Slider", "Post Slider Wide", "Post Slider");
    $array2 = array("Tools Sliders", "Tools Sliders", "modules-test");
    $array3 = array();

    $count = count($array1);

    for($x = 0; $x < $count; $x++){
       $array3[$array1[$x].$x] = $array2[$x];
    }

    foreach($array3 as $key => $value){
        $output_key = substr($key, 0, -1);
        $output_value = $value;
        echo $output_key.": ".$output_value."<br>";
    }
4
Bjorn Lottering
 $arr = array("key1"=>"value1", "key2"=>"value");
    print_r($arr);

// druckt Array ['key1' => "value1", 'key2' => "value2"]

3
sneha

Ein bisschen spät, aber wenn Sie sich nicht für ein verschachteltes Array interessieren, können Sie diesen Ansatz verwenden:

$main_array = array(); //Your array that you want to Push the value into
$value = 10; //The value you want to Push into $main_array
array_Push($main_array, array('Key' => $value));

Zur Verdeutlichung: Wenn Sie json_encode ($ main_array) ausgeben, wird das aussehen wie [{"Key": "10"}]

3
Pontus B

Ich frage mich, warum die einfachste Methode noch nicht veröffentlicht wurde: 

$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];

Es ist das gleiche wie das Zusammenfügen von zwei Arrays mit array_merge.

2
AlexioVay

array_Push ($ GET, $ GET ['one'] = 1);

funktioniert bei mir

2
aaa

Der einfache Weg:

$GET = array();    
$key = 'one=1';
parse_str($key, $GET);

http://php.net/manual/de/function.parse-str.php

1
eSlider
array_Push($arr, ['key1' => $value1, 'key2' => value2]);

Das funktioniert ganz gut . Erstellt den Schlüssel mit seinem Wert im Array 

1
Mesh Manuel

Beispiel array_merge () ....

$array1 = array("color" => "red", 2, 4); $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); $result = array_merge($array1, $array2); print_r($result);

Array ([Farbe] => grün, [0] => 2, [1] => 4, [2] => a, [3] => b, [Form] => Trapez, [4] => 4 ,)

1
illeas

hallo, ich hatte dasselbe Problem. Ich finde, diese Lösung sollte zwei Arrays verwenden und dann beide kombinieren

 <?php

$fname=array("Peter","Ben","Joe");

$age=array("35","37","43");

$c=array_combine($fname,$age);

print_r($c);

?>

referenz: w3schools

1
fantome195

Zum ersten Platzieren mit key und value

$newAarray = [newIndexname => newIndexValue] ;

$yourArray = $newAarray + $yourArray ;
0

Ich habe eine einfache Funktion geschrieben:

function Push(&$arr,$new) {
    $arr = array_merge($arr,$new);
}

damit ich neue elemente einfach "umstecken" kann:

Push($my_array, ['a'=>1,'b'=>2])
0
Elect2