anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: So 15 Jun, 2025 20:28

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Array Behandlung: Array teilen
BeitragVerfasst: So 26 Nov, 2006 04:24 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
Guten Morgen 8) !

Folgender Array ist vorhanden:

$building = array(
"1" => array("Gebäude1","sonstwas"),
"2" => array("Gebäude2","sonstwas"),
"3" => array("Gebäude3","sonstwas")
);

Gebäude 2 soll gelöscht werden und $building somit neu aufgebaut.

Welcher Befehl ist es?

Gruß,
Sir D.


Zuletzt geändert von Sir Drink a lot am Mo 11 Dez, 2006 12:27, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 26 Nov, 2006 05:56 
Offline
Held
Held
Benutzeravatar

Registriert: Di 23 Aug, 2005 23:46
Beiträge: 268
Wohnort: Köln
LoGD: http://www.dragnir.de
IIRC macht man das mit "array_splice()"

Hab in der Hilfe nachgesehen.. damit gehts..

$this->bbcode_second_pass_code('', 'array array_splice ( array input, int offset [, int length [, array replacement]])')

In deine Fall also
$this->bbcode_second_pass_code('', '$building = array_splice ( $buliding, 1, 1)')
lies: Entferne nach 1 Element aus dem Array $building 1 Element.

Habs zwar nicht getestet, aber sollte gehen.
Wobei du bei dieser Funktion wissen musst, wieviele Elemente vor dem zu entfernenden im Array sind, da er nicht nach dem von dir vergebenen Index sucht.


Edit:
Hab erst jetzt gelesen, dass du das Array "neu aufbauen" willst, also wahrscheinlich möchtest du danach keine Lücke in deinen Indizies haben. Wenn du die Indizies von php automatisch vergeben lässt, müsste array_splice() auch die Indizies anpassen. Also definiere dein Array besser so:
$this->bbcode_second_pass_code('', '
$building = array(
array("Gebäude1","sonstwas"),
array("Gebäude2","sonstwas"),
array("Gebäude3","sonstwas")
);
')

Du musst dann halt bedenken, dass die Indexzähler bei 0 beginnt.


Soo, hoffe dir damit geholfen und dich nicht gänzlich verwirrt zu haben. :D

_________________
Warum UNIX/Linux böse ist:

- 'kill' macht Menschen zu brutalen, blutrünstigen Bestien
- 'killall' züchtet regelrecht Massenmörder
- 'whoami' löst bei psychisch labilen Personen Existenzkrisen aus!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 26 Nov, 2006 14:04 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
Ich habe es auch immer mit splice versucht, aber dass noch nicht ganz mit dem offset begriffen... und auch nach Deiner Erklärung, die ich auch in selfphp gelesen habe, raff ich es immer noch nicht ganz *gg*

Ich kriege als Ergebnis den zu löschenden Teil des Arrays... und nicht alle anderen Inhalte ohne eben den Teil, der gelöscht werden muss...
:???:

Muss man da jetzt noch mit diff arbeiten?

ich bekomme ja mit $_GET['id'] den Index des Gebäudes, welches gelöscht werden soll

Zum Edit:
omg... wieso habe ich blos selber da eine "Indizierung" gesetzt mit Identifiern...anstatt es php selber machen zu lassen... *gg* Manchmal hat man irgendwie ein Brett vorm Kopf ;)
Habe jetzt alle Arrays entsprechend umgeändert...(und alle for schleifen) vllt. gibt das jetzt auch mehr Sinn, wenn man splice anwendet *gg*
Ich werde es testen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 26 Nov, 2006 15:27 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
OMG... okay okay....

Nach ein paar Tests und nochmal genau lesend, viel mir ein Satz auf:

splice:
"[...]Das so entstandene Array wird als Funktionsergebnis zurückgegeben[...]"
SELFPHP 1.2

Wie ich nun bemerkt habe, ist wohl das Funktionsergebnis eben der gelöschte Teil des Arrays... aber ich brauche ja eben den Rest des Arrays als Ergebnis...

dadurch dass ich:

$this->bbcode_second_pass_code('', '
$building = array_splice($building,1,1);
')

gesetzt habe, habe ich wohl immer nur den gelöschten Teil ausgegeben bekommen. :???: :?

Einfach durch:
$this->bbcode_second_pass_code('', '
array_splice($building,1,1);
')
habe ich nun mein $building mit den Teilen, die übrig bleiben...

Also tut mir leid, aber irgendwie verstehe ich die Beschreibungen der Funktionen echt anders...

Naja... so sieht das ganze nun bei mir aus:

$this->bbcode_second_pass_code('', '
}else if($_GET['op']=="buildingdel"){
$a=$_GET['id'];
$building = unserialize(kf_get_setting('building'));
$rest=$a+1-count($building);
if($rest==0){
$rest=$a;
}
array_splice($building,$a,$rest);
kf_save_setting('building',$building);
output("Gebäude gelöscht!");
addnav("Sonstiges");
addnav("Zurück zum Gebäudeeditor","kf_admin.php?op=building");
}')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 26 Nov, 2006 18:04 
Offline
Held
Held
Benutzeravatar

Registriert: Di 23 Aug, 2005 23:46
Beiträge: 268
Wohnort: Köln
LoGD: http://www.dragnir.de
Zitat:
Also tut mir leid, aber irgendwie verstehe ich die Beschreibungen der Funktionen echt anders...


Tut mir leid. Wollte dich nicht verwirren, aber ich hab dann die Beschreibung der Funktion auch anders verstanden.

Solange es jetzt funktioniert ist ja gut. :D

_________________
Warum UNIX/Linux böse ist:

- 'kill' macht Menschen zu brutalen, blutrünstigen Bestien
- 'killall' züchtet regelrecht Massenmörder
- 'whoami' löst bei psychisch labilen Personen Existenzkrisen aus!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 27 Nov, 2006 18:53 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
aber schon lustig, wie unterschiedlich man etwas als "Ergebnis" betrachtet *gg*

Naja :) Funktioniert ja jetzt. Auch wie man ja oben sieht, ich mir schon einen etwas abbreche, um den Array nach dem Offset von hinten zu errechnen... das müsste doch einfacher gehen... ich denke immer etwas zu kompliziert.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 27 Nov, 2006 19:11 
Offline
Held
Held
Benutzeravatar

Registriert: Di 23 Aug, 2005 23:46
Beiträge: 268
Wohnort: Köln
LoGD: http://www.dragnir.de
Vielleicht wäre es auch einfacher/besser gegangen, abe rich arbeite noch mit einem php-manual von 2004.. da sollte ich vielleicht auch mal ein neues Besorgen :D

_________________
Warum UNIX/Linux böse ist:

- 'kill' macht Menschen zu brutalen, blutrünstigen Bestien
- 'killall' züchtet regelrecht Massenmörder
- 'whoami' löst bei psychisch labilen Personen Existenzkrisen aus!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum