anpera.net
https://anpera.homeip.net/phpbb3/

Array Behandlung: Array teilen
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=3142
Seite 1 von 1

Autor:  Sir Drink a lot [ So 26 Nov, 2006 04:24 ]
Betreff des Beitrags:  Array Behandlung: Array teilen

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.

Autor:  Lestat [ So 26 Nov, 2006 05:56 ]
Betreff des Beitrags: 

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

Autor:  Sir Drink a lot [ So 26 Nov, 2006 14:04 ]
Betreff des Beitrags: 

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.

Autor:  Sir Drink a lot [ So 26 Nov, 2006 15:27 ]
Betreff des Beitrags: 

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");
}')

Autor:  Lestat [ So 26 Nov, 2006 18:04 ]
Betreff des Beitrags: 

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

Autor:  Sir Drink a lot [ Mo 27 Nov, 2006 18:53 ]
Betreff des Beitrags: 

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.

Autor:  Lestat [ Mo 27 Nov, 2006 19:11 ]
Betreff des Beitrags: 

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

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/