Rol: zwei Zeitangaben vergleichen

Hallo,

ich habe ein zweidimensionales array:

$imagesToImport = array();

das fülle ich in einer Schleife mit Inhalten:

...
$imagesToImport[$imageCounter]["img_name_original"] = $file;
$imagesToImport[$imageCounter]["date"] = $date;
$imagesToImport[$imageCounter]["time"] = $time;
...

Nun muß ich es sortieren und zwar nach "time", diese Felder haben das Format "hh:mm:ss".

ich muß also eine Vergleichsfunktion für usort schreiben.
Nun könnte ich mir aus den Zeitwerten die Anzahl der Sekunden seit Tagesbeginn ausrechnen und diese vergleichen. Aber geht das auch eleganter?

Gruß
Rol

  1. @@Rol:

    nuqneH

    Nun könnte ich mir aus den Zeitwerten die Anzahl der Sekunden seit Tagesbeginn ausrechnen und diese vergleichen. Aber geht das auch eleganter?

    Warum vergleichst du nicht einfach die Strings?

    Qapla'

    --
    Bildung lässt sich nicht downloaden. (Günther Jauch)
    1. Warum vergleichst du nicht einfach die Strings?

      Ich habe jetzt als usort function:

      function cmpTime($a, $b)
      {
          return strcmp($a["time"], $b["time"]);
      }

      Das funktioniert auch, ich hoffe ich habe nichts übersehen?

  2. Hi,

    Nun könnte ich mir aus den Zeitwerten die Anzahl der Sekunden seit Tagesbeginn ausrechnen und diese vergleichen. Aber geht das auch eleganter?

    Du hast Datum und Zeit, also wäre doch mktime eine Option.

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  3. Hello,

    ich habe ein zweidimensionales array:

    $imagesToImport = array();

    das fülle ich in einer Schleife mit Inhalten:

    ...
    $imagesToImport[$imageCounter]["img_name_original"] = $file;
    $imagesToImport[$imageCounter]["date"] = $date;
    $imagesToImport[$imageCounter]["time"] = $time;
    ...

    Nun muß ich es sortieren und zwar nach "time", diese Felder haben das Format "hh:mm:ss".

    Bei diesen Aufgabenstellungen kann ich nur immer wieder fragen: warum organisierst Du die Struktur des Arrays nicht anders herum? Dann kannst Du jede "Spalte" mit den vorhandenen Array-Funktionen behandeln, also sortieren, Summen bilden, Minimum, Maximum, Durchschnitt, und was es sonst noch alles gibt.

    $imagesToImport["img_name_original"][$imageCounter] = $file;
        $imagesToImport["date"][$imageCounter]              = $date;
        $imagesToImport["time"][$imageCounter]              = $time;

    Die Äste dieser Struktur korrespondieren nun über den [$imageCounter] miteinander und man benötigt nur ein paar kleine universelle Funktionen, um mit den "Datensätzen" arbeiten zu können.
    Die Funktionen lassen sich für alle derart organisierten Strukturen immer wieder verwenden.

    Vorteil ist aber, dass für alle normalen Anwendungsfälle die vorhandenen Arrayfunktionen verwendet werden können.

    Um ein solches Array z.B. sortiert nach einer "Spalte" auszugeben, muss man nur diese Spalte mit der gewünschten Sortierfunktion sortieren und dann ein foreach() über den Key der Spalte fahren mit der get_record()-Funktion.

    #------------------------------------------------------------------------------
    function get_record (&$_data, $recno)
    {
        $_rec = array();

    foreach ($_data as $colname => $field)
        {
            $_rec[$colname] = isset($_data[$colname][$recno])?$_data[$colname][$recno]:NULL;
        }

    return $_rec;
    }

    #------------------------------------------------------------------------------
    function delete_record (&$_data, $recno)
    {
        $cols_deleted = 0;

    foreach ($_data as $colname => $field)
        {
            unset($_data[$colname][$recno]);
            $cols_deleted++;
        }

    return $cols_deleted;
    }

    #------------------------------------------------------------------------------
    function update_record(&$_data, $recno, $_record, $expand=false)
    {
        $cols_updated = 0;

    foreach ($_record as $colname => $data)
        {
            if ($expand or isset($_data[$colname][$recno]))
            {
                $_data[$colname][$recno] = $data;
                $cols_updated++;
            }
        }

    return $cols_updated;
    }

    #------------------------------------------------------------------------------
    function insert_record(&$_data, $recno, $_record, $expand=false, $overwrite=false)
    {
        $cols_inserted = 0;

    if (!$overwrite)
        {
            foreach($_record as $colname => $data)
            {
                if (isset($_data[$colname][$recno]))
                {
                    return 0;
                }
            }
        }

    foreach ($_record as $colname => $data)
        {
            if ($expand or isset($_data[$colname]))
            {
                $_data[$colname][$recno] = $data;
                $cols_inserted++;
            }
        }

    return $cols_inserted;
    }

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de