Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

PHP: 2-dimensionales Array sortieren

Hi Leute,
ich steh' grade etwas auf'm Schlauch...
Wie kann ich folgendes Array nach $msg[]["time"] sortieren?
Ich bin mir noch nicht sicher, ob ich es nutzen würde, aber könnte man auch nach ["type"] ordnen und dann nach ["time"]?

Array
(
    [0] => Array
        (
            [type] => friend-recieved
            [time] => 1373375049
            [text] => b b hat dir eine Freundschaftsanfrage geschickt
            [action] => Annehmen -- Ablehnen
        )

    [1] => Array
        (
            [type] => friend-sent
            [time] => 1373375112
            [text] => Du hast a a eine Freundschaftsanfrage geschickt
            [action] => Abbrechen
        )

)

Das Array entsteht folgendermaßen:
<?php
    
include 'includes/db.php';
    
$id mysqli_real_escape_string($conn$_SESSION["id"]);

    
# $msg["type"]  <= Freundschaftsanfrage (gestellt, bekommen, angenommen, abgelehnt)
    #       time
    #       text
    #       action

    
$msg = array();
    
$i 0;

    
######################################
    # Freundschaftsanfrage bekommen
    
$sql "SELECT * FROM {$dbpfx}friends, {$dbpfx}user WHERE {$dbpfx}friends.user2=$id AND {$dbpfx}friends.accepted=0 AND {$dbpfx}friends.user1={$dbpfx}user.id ORDER BY {$dbpfx}friends.time";
    
$erg mysqli_query($conn$sql);
    while(
$e mysqli_fetch_assoc($erg)) {
        
$msg[$i]["type"] = "friend-recieved";
        
$msg[$i]["time"] = $e["time"];
        
$msg[$i]["text"] = $e["vorname"]." ".$e["nachname"].' hat dir eine Freundschaftsanfrage geschickt';
        
$msg[$i]["action"] = 'Annehmen -- Ablehnen';
        
$i++;
    }

    
######################################
    # Freundschaftsanfrage gestellt
    
$sql "SELECT * FROM {$dbpfx}friends, {$dbpfx}user WHERE {$dbpfx}friends.user1=$id AND {$dbpfx}friends.accepted=0 AND {$dbpfx}friends.user2={$dbpfx}user.id ORDER BY {$dbpfx}friends.time";
    
$erg mysqli_query($conn$sql);
    while(
$e mysqli_fetch_assoc($erg)) {
        
$msg[$i]["type"] = "friend-sent";
        
$msg[$i]["time"] = $e["time"];
        
$msg[$i]["text"] = 'Du hast '.$e["vorname"]." ".$e["nachname"].' eine Freundschaftsanfrage geschickt';
        
$msg[$i]["action"] = 'Abbrechen';
        
$i++;
    }

    
# DEBUG ##############################
    
echo '<pre>'.print_r($msgtrue).'</pre>';


    
######################################
    # Ausgabe
    
sort($msg);
    foreach(
$msg as $e) {
        echo 
'<div class="msg">';
        echo 
'<div class="msg_date">'.date("d.m.Y"$e["time"]).'</div>';
        echo 
'<div class="msg_text">'.$e["text"].'</div>';
        echo 
'<div class="msg_time">'.date("H:i"$e["time"]).'</div>';
        echo 
'<div class="msg_action">'.$e["action"].'</div>';
        echo 
'</div>';
    }

?>


Vielen Dank :)

Antworten zu PHP: 2-dimensionales Array sortieren:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi,

könnte Dir array_multisort() weiterhelfen? Habs mir nicht genau durchgelesen, aber hört sich so an wie das, was du suchst.

Hi MBG,

ich glaube das hätte mir geholfen..

Ich werde es vielleicht noch ändern, aber ich habe es bereits über eine eigene Sortierfunktion gelöst.


function sort_msg($arr, $dir="u", $key="time") {
    $n = count($arr);
    for($c=0; $c<$n-1; $c++) {
        for($d=0; $d<$n-$c-1; $d++) {
            if($dir=="u" && $arr[$d][$key] > $arr[$d+1][$key] || $dir=="d" && $arr[$d][$key] < $arr[$d+1][$key]) {
                $swap = $arr[$d];
                $arr[$d] = $arr[$d+1];
                $arr[$d+1] = $swap;
            }
        }
    }
    return $arr;
}

Ich wollte das Thema schon eher als geklärt markieren, aber ich war in den letzten Tagen nur noch mit Ubuntu unterwegs und der Firefox dort wollte den "Antworten"-Links erst nicht folgen und dann wollte er das Formular nicht abschicken...

Vielen Dank, vielleicht werde ich meine Funktion noch rausnehmen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Noch ein Tipp: Für benutzerdefinierte Sortierfunktionen eignet sich usort: http://www.php.net/manual/de/function.usort.php

Danke, vielleicht nehm' ich auch nur die.


« (Witz) Webseite in verschiedenen Browsern testen...Uploadscript mit bildverkleinerung »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...

QR-Code
QR-Codes, die Abkürzung für "Quick Response Codes", sind eine Form von zweidimensionalen Barcodes. Damit lassen sich Informationen schnell und effizient speiche...