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 einen unkompilierten Programm-Code einer Software. Der Quellcode ist meist in einer der verbreiteten Programmierspra...

Unicode
Ein Unicode ist ein "Einheitsschlüssel", der als internationaler Standard gilt. Unicode ist ein digitaler Zeichensatz zur Darstellung von weitestgehend jedem Schrift...

QR-Code
Die Abkürzung QR steht für "Quick Response" und besteht aus einer quadratischen Matrix mit schwarzen und weißen Punktren. Zudem sind auch Striche zu sehen...