power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 24.11.2003, 22:07   #1
QCO
TP-Senior
 
Registriert seit: Mar 2003
Ort: Leipzig
QCO macht alles soweit korrekt

unset() und Referenzen


Wie kann ich ein Element eines Arrays, dass ich nur über eine Referenz kenne, löschen?

Ich hab in etwas folgendes
PHP-Code:
$a = array( 'a''b''c''d');
$b = array( &$a[0], &$a[1], &$a[2], &$a[3]); 
und möchte nun das Element aus $a, worauf die Referenz $b[xxx] zeigt, löschen. Wie stell ich das an?
Folgendes geht schonmal nicht...
PHP-Code:
echo "<br />a :&nbsp;&nbsp;";
print_r($a);
echo 
"<br />b :&nbsp;&nbsp;";
print_r($b);

        echo 
"<br /><br />";

unset(
$b[2]);

echo 
"<br />a :&nbsp;&nbsp;";
print_r($a);
echo 
"<br />b :&nbsp;&nbsp;";
print_r($b); 
sondern liefert nur:

a : Array ( [0] => a [1] => b [2] => c [3] => d )


b : Array ( [0] => a [1] => b [2] => c [3] => d )


a : Array ( [0] => a [1] => b [2] => c [3] => d )


b : Array ( [0] => a [1] => b [3] => d )
__________________
[httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
QCO ist offline   Mit Zitat antworten


Alt 24.11.2003, 23:12   #2
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Du hast wahrscheinlich falsch gedacht, aber soweit ich dich verstanden habe, ist das was du suchst:
PHP-Code:
$a = array( 'a''b''c''d');
$b = array();
$b =& $a;

echo 
"<br />a :&nbsp;&nbsp;";
print_r($a);
echo 
"<br />b :&nbsp;&nbsp;";
print_r($b);

        echo 
"<br /><br />";

unset(
$b[2]);

echo 
"<br />a :&nbsp;&nbsp;";
print_r($a);
echo 
"<br />b :&nbsp;&nbsp;";
print_r($b); 

Geändert von Strogij (24.11.2003 um 23:14 Uhr).
Strogij ist offline   Mit Zitat antworten
Alt 24.11.2003, 23:57   #3
QCO
TP-Senior
 
Registriert seit: Mar 2003
Ort: Leipzig
QCO macht alles soweit korrekt

leider nicht...


Leider ist es nicht so einfach. Der Code war schon richtig so...

$b enthält nicht die gleichen Elemente wie $a, so dass $b[xx] != $a[xx]. Genaugenommen besteht $b aus Referenzen auf Elemente von $a1 und $a2. Das ist auch der Grund, warum ich nicht direkt auf das Ursprungsarray zugreifen kann, weil ich nicht weiß, wohin meine Referenz in $b nun zeigt....
__________________
[httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
QCO ist offline   Mit Zitat antworten
Alt 24.11.2003, 23:59   #4
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
interessante Frage, wo ich glaube, dass es wohl keine lösung dafür gibt
http://at2.php.net/manual/en/function.unset.php

hier der abschnitt mit den referenzen stimmt mich ein wenig pessimistisch.


Ausserdem: In deinem Beispiel wird ja auch nur die Referenzierungsadresse, die in einem eigenen Array sitzt gelöscht.

Somit ist imho der einzig gangbare weg, der, den strogij gepostet hat.
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 25.11.2003, 00:05   #5
QCO
TP-Senior
 
Registriert seit: Mar 2003
Ort: Leipzig
QCO macht alles soweit korrekt
Zitat:
Original geschrieben von mike
Ausserdem: In deinem Beispiel wird ja auch nur die Referenzierungsadresse, die in einem eigenen Array sitzt gelöscht.
Weiß ich ja. Hab auch geschrieben geschrieben, dass es so nicht geht.

Manual hatte ich auch schon gelesen...
Das ist Mist, dass das nicht geht. Trotzdem Danke
__________________
[httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
QCO ist offline   Mit Zitat antworten
Alt 25.11.2003, 00:13   #6
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
Was noch funktionieren würde, wäre die zelle nicht zu löschen, sondern nur zu leeren.
Würde das ins Konzept passen?
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 25.11.2003, 00:56   #7
QCO
TP-Senior
 
Registriert seit: Mar 2003
Ort: Leipzig
QCO macht alles soweit korrekt
mhh, wäre natürlich auch eine möglichkeit... ist im Grunde egal. Jedenfalls muss ich an der Struktur des Skripts was ändern...
__________________
[httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
QCO ist offline   Mit Zitat antworten
Alt 25.11.2003, 01:00   #8
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Ja das dachte ich auch, aber ansonsten ist sowas in PHP nicht möglich, in einer Programmiersprache wie z.B. C hat man ja die Adresse im Speicher, mit der man arbeiten kann, hier kann man nur den neuen Namen für eine Variable anlegen, die dann diese referenziert und man keine weiteren Möglichkeiten hat als einfach den Wert zu manipulieren.
Aber, was möglich wäre glaube ich ist eine Klasse für dieses Problem. Und zwar hat man danach sein eigenes Array-Typ mit Methoden und Elementen, die sowas möglich machen. Irgend eine Logik hat dieses Verfahren ja, ich werde es mal morgen anschauen, interessiert mich persönlich. Die beiden Arrays haben aber die gleiche Anzahl an Elementen, oder ist es nicht immer der Fall?
Strogij ist offline   Mit Zitat antworten
Alt 25.11.2003, 01:10   #9
QCO
TP-Senior
 
Registriert seit: Mar 2003
Ort: Leipzig
QCO macht alles soweit korrekt
Also in meinem konkreten Fall nicht.
Hier mal ein Codeschnippsel...
PHP-Code:
    $ug_data = array();

// ...
    
$users = array();
    while( 
$row $db->sql_fetchrow($result) )
    {
        
$users[$row['group_id']] = $row;
        
$ug_data[] = &$users[$row['group_id']];
    }

    for(
$i 0$i count($usergroups); $i++)
    {
        
$ug_data[] = &$usergroups[$i];
    } 
Und später wollte ich dann halt aus den Arrays bestimmte Einträge wieder raushaun...
__________________
[httpsmog]
"I have not failed. I've just found 10,000 ways that won't work." - Thomas Alva Edison (1847-1931)
QCO ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
unset() und Referenzen unset() und Referenzen
« aufbau einer hierarchie mit beinahe "unmöglicher" struktur | Bestellformular mit Dropdown Menü erweitern »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:18 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67