php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-12-2012, 02:31
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard Multi Array sortieren (wieder mal)

Hallöchen liebe Gemeinde,
ich verbeisse mich (schon wieder ) beim Sortieren eines "Multi-Array,s"

Array:

PHP-Code:
[2012-11-02] => Array (
[
0] => Array(
                     [
sp_1] => Micky1st
                     
[sp_2] => devil48
                     
[erg_1] => 3
                     
[erg_2] => 1
                     
[zeit] => 20:09:57
                 
)
[
1] => Array (
                     [
sp_1] => Micky1st
                     
[sp_2] => billard-lord
                     
[erg_1] => 3
                     
[erg_2] => 2
                     
[zeit] => 20:42:21
                 
)
[
2] => Array (
                     [
sp_1] => reds1994
                     
[sp_2] => Micky1st
                     
[erg_1] => 3
                     
[erg_2] => 2
                     
[zeit] => 22:28:36
                 
)
[
3] => Array (
                     [
sp_1] => Crazy Painter
                     
[sp_2] => Micky1st
                     
[erg_1] => 3
                     
[erg_2] => 1
                     
[zeit] => 18:01:25
                 
)
[
4] => Array (
                     [
sp_1] => Aris
                     
[sp_2] => PekingPeter
                     
[erg_1] => 3
                     
[erg_2] => 1
                     
[zeit] => 19:19:44
                 
)
          )
[
2012-11-03] => Array (
[
0] => Array ( 
                    [
sp_1] => Homer85
                     
[sp_2] => devil48
                     
[erg_1] => 3
                     
[erg_2] => 1
                     
[zeit] => 19:00:44
                 
)
[
1] => Array (
                     [
sp_1] => Micky1st
                     
[sp_2] => Aris
                     
[erg_1] => 3
                     
[erg_2] => 1
                     
[zeit] => 21:19:01
                 
)
[
2] => Array (
                     [
sp_1] => Reimarus
                     
[sp_2] => reds1994
                     
[erg_1] => 3
                     
[erg_2] => 2
                     
[zeit] => 10:36:35
                 

         ) 

//usw 
Nun möchte ich Inhalt der Datums-Key,s-Arrays nach der Zeit aufsteigen sortieren.

Habe es mit uasort, usort und array_multisort 5 Stunden erfolglos versucht.

Ich hab ähnliche Situationen schön gelöst, aber nun würde ich mich über einen Schubser
in die richtige Richtung freuen.

Danke und Gruss
Wasser Wanderer
Mit Zitat antworten
  #2 (permalink)  
Alt 08-12-2012, 09:57
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Um nach dem Datum zu sortieren wäre ksort, bzw uksort angesagt.
Für die 2te Ebene (Zeit) würde ich dann usort oder uasort verwenden.

Kommen die Daten aus der DB?
Dann lass die DB sortieren.
__________________
Wir werden alle sterben

Geändert von combie (08-12-2012 um 11:04 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 08-12-2012, 12:11
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Guten Morgen combie,
Nach Datums-Key ist es schon sortiert.

Die Daten kommen (leider) nicht aus einer DB

Ich hatte es für die 2te Ebene (zeit) schon so (erfolglos) versucht:

PHP-Code:
function cmp_by_spalte_numerisch($spalte$sortierrichtung SORT_ASC)
  {
         
$richtung SORT_ASC === $sortierrichtung?1:-1
         return function (
$a,$b) use ($spalte,$richtung)
                {     
                      return (
$a[$spalte] - $b[$spalte]) * $richtung;
                };   
  }
   
uasort($array,cmp_by_spalte_numerisch('zeit',SORT_ASC)); 
Ich glaub die Funktion hatte ich von dir Combie
Mit Zitat antworten
  #4 (permalink)  
Alt 08-12-2012, 12:29
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Ja, sieht so aus.
Aber.... das ist nicht für diese Struktur gefertigt.

Du solltest das Array in der ersten Dimension mit array_map, array_walk oder foreach durchlaufen. Und dann die 2te Dimension mit usort, oder was auch immer sortieren.

Aber sagte ich das nicht schon?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 08-12-2012, 13:21
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Ja, sieht so aus.
Aber.... das ist nicht für diese Struktur gefertigt.

Du solltest das Array in der ersten Dimension mit array_map, array_walk oder foreach durchlaufen. Und dann die 2te Dimension mit usort, oder was auch immer sortieren.

Aber sagte ich das nicht schon?
Das werd ich nachher mal machen und dann berichten.

Ich werde erstmal Glühwein aufm Weihnachstmakrt vernichten, und danach kann ich bestimmt besser denken
Mit Zitat antworten
  #6 (permalink)  
Alt 08-12-2012, 14:20
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Tipp:
Wenn du die Testdaten mit <pre> formatieren und mit var_export() ausgeben würdest, dann könnte das auch jeder testen, ganz ohne Abtipporgie.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #7 (permalink)  
Alt 08-12-2012, 23:12
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von combie Beitrag anzeigen
Tipp:
Wenn du die Testdaten mit <pre> formatieren und mit var_export() ausgeben würdest, dann könnte das auch jeder testen, ganz ohne Abtipporgie.
Hallöchen combie,
das würde ich gerne machen, aber wenn ich das aus dem Browser kopiere und
hier einfüge, dann hab ich in der Vorschau hier, unzählige an TAB,s drinne.

Das wieder zusammen zu friemeln, dauert ewig. Oder gibt es da noch einen anderen Tipp?

P.S. Glühwein war lecker und ich kann dennoch nicht besser denken
Mit Zitat antworten
  #8 (permalink)  
Alt 09-12-2012, 07:55
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Ich habe mal mein bisheriges "Machwerk" hier: http://billard-turniere.bplaced.net/...uppenbruch.php

inklusive formartierter Array-Ausgabe hochgeladen.



Zuerst seht ihr eine Tabelle die nach Datum sortiert, danach nach Begegnungen sortiert ist.

Ich schaffe es nicht (ob mit oder ohne Glühwein), innerhalb des Datums dann nach Uhrzeit aufsteigend zu sortieren.
Mit Zitat antworten
  #9 (permalink)  
Alt 09-12-2012, 09:59
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Ich schaffe es nicht (ob mit oder ohne Glühwein), innerhalb des Datums dann nach Uhrzeit aufsteigend zu sortieren.
Dann zeige doch mal was du falsch machst.

Wie gesagt, diese Funktion von mir ist nicht optimal, denn sie sortiert numerisch. Das führt spätestens nach dem Doppelpunkt in der Zeit zu Sorgen.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #10 (permalink)  
Alt 09-12-2012, 19:07
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Hallöchen combie,

Zitat:
Zitat von combie Beitrag anzeigen
Dann zeige doch mal was du falsch machst.

Wie gesagt, diese Funktion von mir ist nicht optimal, denn sie sortiert numerisch. Das führt spätestens nach dem Doppelpunkt in der Zeit zu Sorgen.
Ich habe das Array nun neu indiziert:
Erste Ebene: [datum]
Zweite Ebene: [k_zeit] (hier hatte ich in der Zeit die Doppelpunkte entfernt. Auch die Zeit ist unique in der 2ten Ebene)
innerhalb der zweiten Ebene:
sp_1 => bla
sp_2 => blubb
erg_1 => 3
erg_2 => x
zeit => 18:05:02 (bsp)

mit ksort($array) , kriege ich das Datum ASC sortiert

Mit der Funktion:
PHP-Code:
function sortieren($a$b)
{

    
/*echo "Comparing ".print_r($a,true).
           " to ".print_r($b,true)."<br />";*/
    //equal -> return 0
    
if ($a == $b) return 0;
    
//lowwest income at first
    
if ($a $b) return 1;
    
//highest income last
    
return -1;
}; 
und dann:
PHP-Code:
uasort($array,'sortieren'); 
oder:
PHP-Code:
uasort($new_array[$datum][$k_zeit],'sortieren'); 
klappt es nicht dann nach Zeit ASC zu sortieren..

Ich habe die Ausgabe des <pre>-formartierten Array,s angepasst.
Siehe obigen link. Die HTML-Ausgabe darüber ist erstmal zu vernachlässigen, da ich mich sowieso heillos verzettelt habe
Mit Zitat antworten
  #11 (permalink)  
Alt 09-12-2012, 19:17
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

PHP-Code:
$sortcallback = function($a$b
            {
                      return 
strtotime($a['zeit']) - strtotime($b['zeit']);
            };
                         
$walkcallback = function(&$subarray) use ($sortcallback)
        {
           
usort($subarray,$sortcallback);
        };

array_walk($deinarray,$walkcallback); 
__________________
Wir werden alle sterben
Mit Zitat antworten
  #12 (permalink)  
Alt 09-12-2012, 20:06
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

combie du bist mein Held

Dein Ergebnis ist hier zu sehen: http://billard-turniere.bplaced.net/...uppenbruch.php

Da noch Weihnachtsmärkte sind, hoffe ich das ich dich mal unter einem
Glühweinstand antreffe. Dann trinken wir mal was zusammen

Mit Zitat antworten
  #13 (permalink)  
Alt 10-12-2012, 10:14
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Ja, schön...
Mir wäre lieber gewesen, du wärst selber auf eine Lösung gekommen.
Haste denn so was gelernt?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #14 (permalink)  
Alt 10-12-2012, 19:02
Wasser_Wanderer
 Registrierter Benutzer
Links : Onlinestatus : Wasser_Wanderer ist offline
Registriert seit: Aug 2011
Beiträge: 225
Wasser_Wanderer befindet sich auf einem aufstrebenden Ast
Standard

Hallo Combie,

Zitat:
Zitat von combie Beitrag anzeigen
Mir wäre lieber gewesen, du wärst selber auf eine Lösung gekommen.
Ja. Das wäre mir auch lieber gewesen.

Zitat:
Haste denn so was gelernt?
Um offen zu sein: Leider nicht.

Aber ich werde mich mit deiner Funktion ausgiebig auseinander setzen,
um was zu lernen.

Ich habe erst (auf den Monat genau) vor 2 Jahren begonnen, mich mit PHP
zu beschäftigen.
Vieles war learning by doing und einem PHP-Buch.

Manches hab ich hier in diesem Forum gelernt, bzw von einer Person die auch etwas Ahnung hatte.

Nunja, mit Ende 40 (mein Alter) habe ich für mich leider feststellen müssen, das das Lernen langsamer voran geht.

Aber ich hab Freude an PHP und an den Lösungen die ich damit schaffen kann. (natürlich lieber selber )
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
sortieren Multi-Array Wasser_Wanderer PHP Developer Forum 5 20-03-2012 22:11
Array Sortieren mal anders... nichtsooft PHP Developer Forum 32 26-08-2009 17:34
Wieder mal Array steiner82 SQL / Datenbanken 5 28-05-2005 15:46
mal wieder array sortieren TommyTanne PHP Developer Forum 1 09-08-2003 00:30
@slarti Wieder mal Array. Wotan PHP Developer Forum 2 11-07-2002 20:27

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:08 Uhr.