PHP dereferenzieren von array-Elementen

Ich habe 2 arrays.

$result = array();
$row = array();

Zeile die Elemente sind alle Verweise und verändert sich ständig. Für jede iteration $row ich wollen, kopieren Sie die Werte der Zeile in der ein Eintrag von $result und nicht die Verweise.

Ich habe ein paar Lösungen, aber Sie alle scheinen ziemlich schrecklich.

$result[] = unserialize(serialize($row));
$result[] = array_flip(array_flip($row));

Beide der oben genannten arbeiten, aber scheinen, wie eine Menge von unnötigen und hässlichen code nur zu kopieren Sie den Inhalt von einem array von Referenzen per Wert, anstatt Sie zu kopieren die Verweise auf sich selbst.

Gibt es eine bessere Möglichkeit, dies zu erreichen? Wenn nicht, was wäre der effizienteste Weg sein?

Dank.

EDIT: Wie unten vorgeschlagen so etwas wie:

function dereference($ref) {
    $dref = array();

    foreach ($ref as $key => $value) {
        $dref[$key] = $value;
    }

    return $dref;
}

$result[] = dereference($row);

Funktioniert auch, scheint aber ebenso hässlich.

  • Dies ist möglicherweise ein Duplikat, stackoverflow.com/questions/1190026/...
  • Er ist den Umgang mit Objekten. Ich beschäftige mich ausschließlich mit arrays.
  • Wenn die Menschen von Ihnen positiv bewertet werden meine Antwort, dann Sie glaubte, dass ich Recht hatte. Wenn es nicht der Fall ist, dann ist es wahrscheinlich bedeutet, dass Sie nicht Ihre Frage klar auf den ersten. Ich finde es eher unhöflich auf Ihr Ende zu sagen, die Menschen zu downvote mein Versuch, Ihnen zu helfen, so werde ich nicht versuchen weitere.
  • tut mir Leid wenn ich Sie beleidigt, aber Ihre Antwort war nicht auf Thema im geringsten. -- Ich nicht zu erwähnen, Gegenstände überhaupt, so dass ein Teil war Ihre Antwort völlig off-topic. - Der andere Teil Ihrer Antwort, obwohl es technisch wahr ist, hatte nichts zu tun mit meiner Frage. Es sei denn, Sie sagten $row in deinem Beispiel war in der Tat voll von Referenzen, in dem Fall war Ihre Antwort falsch und irreführend, wie gezeigt, durch mein Bearbeiten. -- Es erschienen war-Sie hatte sich nicht die Zeit genommen zu Lesen meine Frage und war nur der Versuch, schnell zu beantworten, daher mein Kommentar. Es neigt dazu, miff mich, wenn die Menschen das tun.
  • Ihre dereference Funktion tut genau das gleiche $result[] = $row tun würde. Sehen Sie in Verbindung mit "Alle 3 der oben genannten Arbeit" und "Sie sind alle auf der Grundlage der Tatsache, dass Werte von einer Funktion zurückgegeben werden aufgelöst" verwirrte mich und machte mich denken, Sie waren nur ein wenig aus der Spur über Referenzen in PHP, also ich habe ein perfekt höflich Antwort auf die Frage, wie das kopieren funktioniert. Bitte überprüfen Sie Ihre Fakten, bevor Sie gehen, sagen Menschen, die Sie nicht Lesen können.
  • Auch das ei auf meinem Gesicht. Ich entschuldige mich. - Ich war Herumspielen und irgendwann bekam das zu funktionieren aber ich kann nicht es jetzt tun. Ich hatte offenbar etwas anders. -- In jedem Fall beide, was Sie vorgeschlagen, und meine Funktion beide funktionieren nicht. Obwohl die unten Antwort nicht. - Ich verstehe nicht, warum der Zuweisungsoperator in der foreach-Schleife wird dereferenzieren, aber außerhalb ist es nicht, wenn es in der Tat nicht der Fakt, dass es zurückgegeben wird. Ich hasse PHP Referenzen. Seufz.

InformationsquelleAutor anomareh | 2010-03-02
Schreibe einen Kommentar