array array array

  • Hiho,

    ich brauch mal hilfe beim thema array (bugfix, erhöhre mich *g*)

    was ich will:

    ich habe die filezilla log, die ich auslesen, wenn sich die zugriffszeit ändere.
    ich lese diese in ein array und suche zum einem nach logons, zum anderen nach logoffs.

    beides schreibe ich getrennt in eine weitere datei, so dass in einer datei alles user stehen, die connected haben, in einer weiteren, die (meist nach dem connecten ;) ) wieder vom server disconnected haben.

    das ganze gebe ich dann als spalshtext aus.

    soweit so gut ... weiter würde ich gerne die aktuell verbunden user im traytooltip anzeigen lassen. das ganze will ich nun so realisieren, dass ich einfach beide dateien matche, doppelte einträge lösche (in beiden steht "user" (ip)), den rest in ein weiteren array schreibe und anschließend in den traytooltip lesen.

    das klappt aber irgendwie nicht.

    mit arrayunique filter ich ja doppelte einträge raus, wie füge ich denn 2 arrays zusammen? ist das nicht arraypush?

    [autoit]


    _FileReadToArray($sFilePath2, $lines_A)
    _FileReadToArray($sFilePath3, $lines_B)
    _ArrayPush($lines_A, $lines_B)
    _FileWriteFromArray($sFilePath4, _ArrayUnique($lines_A), 1)
    _FileReadToArray($sFilePath2, $lines_A)

    [/autoit]

    EDIT: also arraypush klappt, jedoch arrayunique nicht ...

    • Offizieller Beitrag
    Zitat

    mit arrayunique filter ich ja doppelte einträge raus, wie füge ich denn 2 arrays zusammen? ist das nicht arraypush?


    Nein, ist es nicht. Push ist eine in Speicherregistern verwendete Funktion mit dem Wirkungsalgorithmus: Last-In / First-Out
    Heißt: Du fügst ans Ende einen Eintrag an, dafür wird der erste Eintrag gelöscht - das Array bleibt gleich groß.
    (Oder entgegengesetzt: FILO)

    Zitat

    Hilfe:
    Add new values without increasing array size. Either by inserting at the end the new value and deleting the first one or vice versa.

    Um Arrays zusammenzufügen verwende _Array2DJoin() aus meiner Sig.
    Zum Entfernen von Doppeleinträgen verwende ich meine eigene Fkt. _Array2DDblDel().

  • ah, dank dir, das hilft mir schonmal weiter beim arrayjoin-prob.

    jedoch, nach langem rumtesten, fiel mir endlich auf, dass der fehler mit arrayunique in meinem kopf liegt. es funzt schon, nur suche ich was anderes, ... was mir jetzt endlich klar wurde.

    dann dabei werden ja nur die DOPPELTEN eintrage entfernt. bei mir wäre aber der fall, sofern ein eintrag doppelt/mehrmals vorhanden ist, sollen diese alle gelöscht werden.

    also nur einträge, die entweder in array1 ODER array2 standen, sollen im neuen array auftauchen.

    gibt es da was für? ich glaube bei den standardarrays gibt es da keine möglichkeit ...

    und noch ne frage zu arraytrim ... bei mir funzt das nicht. es ist doch richtig, dass er links/rechts was abschneidet, oder?

    da ich es zu spät gefunden habe, hatte ich folgendes (was geht)

    [autoit]

    $left = StringTrimLeft($lines_A[$i], 31)
    $right = StringTrimRight($left, 15)
    _ArrayAdd($lines_A, $right)
    _ArrayDelete($lines_A, $i)

    [/autoit]

    mit arraytrim hab ich es so gemacht, er schneidet aber nix ab

    [autoit]

    _ArrayTrim($lines_A, 31, 0, 1, 3)
    _ArrayTrim($lines_A, 15, 1, 1, 3)

    [/autoit][autoit][/autoit][autoit]

    oder einfach

    [/autoit][autoit][/autoit][autoit]

    _ArrayTrim($lines_A, 31, 0)
    _ArrayTrim($lines_A, 15, 1)

    [/autoit]

    wo liegt mein fehler?