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)

21voto

jeffff Punkte 1289

Genau das, was Pekka gesagt hat...

Alternativ könnten Sie wahrscheinlich array_merge so verwenden, wenn Sie wollten:

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

Aber ich würde wahrscheinlich Pekkas Methode bevorzugen, da sie viel einfacher ist.

9voto

Cory Cullers Punkte 129

Ich habe gerade nach dem gleichen gesucht und festgestellt, dass mein Denken, wie immer, anders ist, weil ich altmodisch bin. Ich gehe ganz zurück zu BASIC und PERL und manchmal vergesse ich, wie einfach die Dinge wirklich in PHP sind.

Ich habe gerade diese Funktion erstellt, um alle Einstellungen aus der Datenbank zu übernehmen, wo es 3 Spalten gibt. setkey, item (Schlüssel) & value (Wert) und sie in ein Array mit dem Namen Einstellungen mit dem gleichen Schlüssel/Wert zu platzieren, ohne push zu verwenden, genau wie oben.

Ziemlich einfach & wirklich einfach

// Holen Sie alle Einstellungen
$settings = getGlobalSettings();

// Wenden Sie die vom Benutzer gewählte Themenwahl an
$theme\_choice = $settings\['theme'\];

.. etc etc etc ....

function getGlobalSettings(){

    $dbc = mysqli\_connect(wds\_db\_host, wds\_db\_user, wds\_db\_pass) or die("MySQL-Fehler: ".mysqli\_error());
    mysqli\_select\_db($dbc, wds\_db\_name) or 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;
}

Also wie die anderen Beiträge erklären... In PHP braucht man kein Array zu "PUSHEN", wenn man

Schlüssel => Wert

verwendet

UND... Es ist auch nicht notwendig, das Array zuerst zu definieren.

$array=array();

Es ist nicht nötig zu definieren oder zu pushen. Einfach $array[$key] = $value; Es ist automatisch ein push und eine Deklaration zur gleichen Zeit.

Ich muss hinzufügen, dass aus Sicherheitsgründen, (U)ngenügende (H)ilflose (S)icherheit, ich meine Programmieren für Anfänger, ich meine PHP.... hehehe ich empfehle, dass Sie dieses Konzept nur für das verwenden, wofür ich es beabsichtigt habe. Jede andere Methode könnte ein Sicherheitsrisiko darstellen. So, habe meinen Haftungsausschluss gemacht!

9voto

theBigBadBacon Punkte 99

Ein wenig spät, aber wenn es dir nichts ausmacht, ein verschachteltes Array zu verwenden, könntest du folgenden Ansatz wählen:

$main_array = array(); // Dein Array, in das du den Wert einfügen möchtest
$value = 10; // Der Wert, den du in $main_array einfügen möchtest
array_push($main_array, array('Key' => $value));

Zur Klarstellung, wenn du json_encode($main_array) ausgibst, wird das so aussehen: [{"Key":"10"}]

8voto

Faris Rayhan Punkte 3833

Dies ist die Lösung, die für Sie hilfreich sein kann

Klasse Form {
# Deklarieren Sie den Eingang als Eigenschaft
private $Input = [];

# Fügen Sie dann das Array hinzu
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 Sie es ausgeben, sieht das Ergebnis so aus

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)

4voto

Bjorn Lottering Punkte 83

Ein bisschen seltsam, 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."";
    }

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