Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PHP - unique-array() und sort()

Mitglied: ThomasXYZ

ThomasXYZ (Level 1) - Jetzt verbinden

03.04.2017, aktualisiert 14:27 Uhr, 1026 Aufrufe, 14 Kommentare

Hallo zusammen,

ich bin gerade leicht am verzweifeln und finde nicht so recht die Lösung.

Ich bekomme per Datenbankabfrage ein Array ausgeliefert. Das wäre am konkreten Beispiel $teil[ ] (gefüllt mit [0] - [5]).

Mein Ziel ist es, dass $teil[1] - $teil[3] zusammengeführt wird, jeder Wert nur einmal vorhanden ist und nach einer bestimmten Regel sortiert ist.

Folgendes Beispiel habe ich:
$teil[1] = "";
$teil[2] = "U, I";
$teil[3] = "A, V, I";

Die Variablen $teil[ ] habe ich hier an dem Beispiel mal direkt definiert. Sie kommen sonst direkt per DB-Abfrage so heraus. Wie man sieht, ist $teil[0] = NULL. Teil 2 und 3 sind gefüllt, enthalten aber auch doppelte Einträge. Die gilt es zu löschen. Danach soll es in folgende Reihenfolge gebracht werden, sodass in diesem Beispiel ein
$ausgabe = "A, V, U, I"
herauskommt. Das soll immer das Ergebnis sein. Es kann auch mal sein, dass $ausgabe mal kein A oder kein V beinhaltet. Hauptsache diese Reihenfolge, mit Komma getrennt, wird eingehalten.

Ich hoffe ihr versteht mich und könnt mir irgendwie weiterhelfen...

Gruß
ThomasXYZ
Mitglied: SlainteMhath
03.04.2017 um 14:44 Uhr
Moin,

ich weis nicht ob ich dich richt verstanden habe... trotzdem ein Versuch mit Pseudo-Code
lg,
Slainte
Bitte warten ..
Mitglied: 132692
03.04.2017, aktualisiert um 14:48 Uhr
Ausgabe: A,I,U,V

Gruß p.
Bitte warten ..
Mitglied: ThomasXYZ
03.04.2017 um 14:48 Uhr
Das sieht schon einmal viel versprechend aus! Ich werde es mal testen und mich gleich zurückmelden.
Bitte warten ..
Mitglied: ThomasXYZ
03.04.2017, aktualisiert um 14:56 Uhr
Also die Lösung sollte, blöd aneinandergereiht, so lauten: U, I, A, V, I
Sortiert so: A, V, U, I, I
Und doppelte Zeichen gelöscht so: A, V, U, I

Dein Ergebnis bringt für die selbe Zeile I, V,A,U raus. Wobei ich dort aus der Sortierung nicht schlau werde, wie die zustande gekommen ist... :-$

Ich habe deinen Code folgendermaßen angepasst:
Bitte warten ..
Mitglied: 132692
03.04.2017, aktualisiert um 15:00 Uhr
Dein Ergebnis bringt für die selbe Zeile I, V,A,U raus.
Nö bei mir nicht. Oder hast du Leerzeichen zwischen den Kommas?
Bitte warten ..
Mitglied: ThomasXYZ
03.04.2017, aktualisiert um 15:01 Uhr
Ja habe ich...

Mein Problem dabei ist, dass nicht alphabetisch sondern "individuell" sortiert werden soll. Also erst das A, dann V, dann U, dann I.....
Bitte warten ..
Mitglied: 132692
03.04.2017 um 15:01 Uhr
Dann musst du die raus "trimmen".
Bitte warten ..
Mitglied: ThomasXYZ
03.04.2017 um 15:02 Uhr
Okay...

Und wie bekomme ich eine individuelle Sortierung hin?
Bitte warten ..
Mitglied: 132692
LÖSUNG 03.04.2017, aktualisiert um 15:07 Uhr
Wie wärs mal ab und zu mit minimal Doku lesen ...
Bitte warten ..
Mitglied: ThomasXYZ
03.04.2017, aktualisiert um 15:12 Uhr
Ich sehe den Wald vor lauter Bäumen nicht.
Ich verstehe gerade irgendwie nicht, wie ich das Ganze nun manuell sortieren kann. Kannst du mir das bitte evtl. an meinem Beispiel zeigen?
Bitte warten ..
Mitglied: 132692
03.04.2017, aktualisiert um 16:00 Uhr
Zitat von ThomasXYZ:

Ich sehe den Wald vor lauter Bäumen nicht.
Ich verstehe gerade irgendwie nicht, wie ich das Ganze nun manuell sortieren kann. Kannst du mir das bitte evtl. an meinem Beispiel zeigen?
usort ist dein Freund wenn du eigene Sortierroutinen haben willst, du schreibst ja leider nicht das Konzept hinter deiner Sortierung, da kann man auch kein Beispiel machen ...
Aber anscheinend besteht ja kein Bedarf mehr, Beitrag ist ja gelöst?!

Na denn ciao
Gruss p.
Bitte warten ..
Mitglied: ThomasXYZ
03.04.2017, aktualisiert um 16:33 Uhr
Naja, meine Sortierung habe ich genannt. usort() habe ich mir bereits angeschaut. Da steige ich leider nicht so ganz durch im Moment.

Da der Button, "Zur Lösung beigetragen" irreführend ist, ist der Beitrag nun gelöst. Ist er aber nicht, da die Ausgabe noch die falsche Reihenfolge hat.
Bitte warten ..
Mitglied: 132692
LÖSUNG 03.04.2017, aktualisiert um 16:58 Uhr
Zitat von ThomasXYZ:

Naja, meine Sortierung habe ich genannt.
Ja, aber ich erkenne an A,V,U,I nun überhaupt kein Muster nachdem ich einen Algorithmus schreiben könnte!

usort() habe ich mir bereits angeschaut. Da steige ich leider nicht so ganz durch im Moment.
Ganz einfach du machst dir eine custom sort function und in der Function entscheidest du per IF Abfrage ob ein Element größer oder kleiner als das andere ist.
Ist es größer gibst du aus der Function eine 1 zurück, ist es kleiner eine -1.
Du gibst also deinen X Werten jeweils einen festen Wert in der Reihenfolge die du haben willst und vergleichst diese per IF miteinander. Sieh dir die Beispiele auf der Seite an, da ist das ja ganz anschaulich erläutert worden.


Da der Button, "Zur Lösung beigetragen" irreführend ist, ist der Beitrag nun gelöst.
Kannst du rückgängig machen, Beitrag bearbeiten und unten den Haken weg machen.
Bitte warten ..
Mitglied: ThomasXYZ
04.04.2017 um 08:07 Uhr
Das hat mein Problem gelöst! Es funktioniert perfekt. Besten Dank.

Die Sortierung ist ja nicht von mir vorgegeben, sondern der eines RACI-Modells. Dort gibt es die Buchstaben R, A, C, I und die sind bei uns umbenannt in A, V, U, I und müssen in der Reihenfolge unbedingt vorkommen. V, U, I oder A, U, I sind auch möglich. Die Reihenfolge ist wichtig.

Ich habe mir usort() angeschaut und mir deiner Erklärung und deinem Code glaube ich auch versanden.

Vielen vielen Dank!
Bitte warten ..
Ähnliche Inhalte
PHP
Php regex und Array
gelöst Frage von Thomas91PHP5 Kommentare

Hallo zusammen, ich benötige dringen hilfe mit php, regex und einem Array. Ich habe eine Textdatei in der eine ...

PHP
PHP Array mixen nach Schema
gelöst Frage von LorderichPHP3 Kommentare

Hallo zusammen, irgendwie stehe ich nun seit knapp 2 Tagen ein bisschen wie der Ochse vor Berg und sehe ...

PHP
Dynamisches Array erstellen in PHP
gelöst Frage von Xaero1982PHP22 Kommentare

Moin Zusammen, ich bräuchte mal einen Geistesblitz. Ich habe ganz viele Daten in einer MongoDb. Ich möchte diese Daten ...

JavaScript
Javascript Array
gelöst Frage von internet2107JavaScript2 Kommentare

Ich habe folgendes Problem. Ersetze ich die folgenden Zahlen gegen Variablenwerte, bekomme ich nicht das Ergebnis, wie mit festen ...

Neue Wissensbeiträge
E-Books

Ausgewählte Rheinwerk-Bücher jetzt online lesen! Kostenfrei

Information von Maxima2005 vor 1 TagE-Books1 Kommentar

Vielleicht hat ja jemand Interesse sein Wissen zu erweitern. Ausgewählte Rheinwerk-Bücher jetzt online lesen! Grüße Max

Instant Messaging
Jitsi Meet - April Update verfügbar
Information von Frank vor 1 TagInstant Messaging5 Kommentare

Im Rahmen des April-Updates erhält Jitsi Meet mehrere interessante Features. Anwender können nun nicht mehr nur ihren Bildschirm, sondern ...

Rechtliche Fragen

Rechtliche Grundlagen: Datenschutz und Datensicherheit im Homeoffice

Information von AnkhMorpork vor 2 TagenRechtliche Fragen

Sollte bekannt sein, aber

Router & Routing
"Upgrade" Fritte 7520 zu Fritte 7530 :-)
Information von Lochkartenstanzer vor 2 TagenRouter & Routing6 Kommentare

Moin, wie sich herausgestellt hat, ist die 7520 eine per Software kastrierte Version der 7530. Per "Chiptuning", um es ...

Heiß diskutierte Inhalte
Server-Hardware
Wie viel Speicher braucht eine Wissensdatenbank für bis zu 50 User?
Frage von Mrhallo19981Server-Hardware39 Kommentare

Hallo, könnt ihr mir sagen wieviel Speicherplatz eine Wissensdatenbank braucht (die physikalisch speichert, also nicht mit einer Datenbank zusammen) ...

Festplatten, SSD, Raid
Festplatten Datenvernichtung Server
Frage von survial555Festplatten, SSD, Raid30 Kommentare

Hallo, ich habe noch ein paar alte Server, wo ich die verbauten Festplatten gerne datentechnisch "sicher" löschen möchte. Leider ...

Linux
Internetprobleme mit Wine für Linux um .exe Dateien auszuführen
Frage von WinLiCLILinux22 Kommentare

Hallo zusammen, ich möchte auf meinem debian 10 einen client für cloud-telefonie (cloud pbx) installieren, den es nur für ...

Server-Hardware
Dimensionierung Server-Hardware
Frage von MurpelServer-Hardware17 Kommentare

Moin Moin, ich möchte einen Server besorgen und aufsetzen. Auf dem Server soll Branchensoftware laufen, auf die 4-6 Nutzer ...