Matti Mäkitalo: Array-Datensatz-Klasse bauen?

Beitrag lesen

Hi,

Trotzdem würde _ich_ nicht auf die von dir vorgestellte Art, Daten zu speichern, ausweichen. Die Nachteile erscheinen mir einfach zu groß, insbesonders, wenn man sich überlegt, mit welchen Laufzeiten die von dir vorgestellten Ausweichfunktionen funktionieren.

Hast Du die denn mal getestet gegenüber der orthogonalen Standardlösung?

nein, deswegen nutzte ich das Wort "erscheinen". Was ich beschrieb, sind theoretische Überlegungen.

Beispiele aus deinem Artikel, n sei die Anzahl der Einträge, m die Anzahl der Eigenschaften pro Eintrag.

function get_record (&$_data, $recno)  
{  
    $_rec = array();  
  
    foreach ($_data as $colname => $field)  
    {  
        $_rec[$colname] = isset($_data[$colname][$recno])?$_data[$colname][$recno]:NULL;  
    }  
  
    return $_rec;  
}

Für die Laufzeit hast du die for-Schleife, welche du ganz durchlaufen musst (O(m)), und dann noch die Array-Zugriffe (O(log n)), also O(m log n) zusammen.
In der üblichen Speicherung brauchst du dafür nur O(log n).

Das zieht sich durch deine anderen Funktionen durch. Als Vorteil hast du, dass du bequemer die PHP-Array-Funktionen nutzen kannst. Mit erwähnten array_map/array_reduce/... kannst du aber hier jegliches Verhalten für Objekt-Arrays einigermaßen bequem nachbauen, insbesondere, wenn du Callback-Funktionen nutzen kannst. Für die Laufzeit sollte das keinen wesentlichen Unterschied machen.

Nun ist Laufzeit sicherlich nicht das Hauptproblem von PHP-Code. Bei großen Datenmengen macht man sich sicherlich Gedanken, ob man den dauerhaft im Speicher halten sollte (z.B. Datenbank-Resultsets können ja auch jeweils von der Datenbank einzeln abgeholt werden, ohne sie alle gleichzeitig im PHP-Speicher halten zu müssen; hier hätte man auch gleich die objektartige Speicherung).

Bis die Tage,
Matti

0 64

Summe eines Arrays

Matzeeee
  • php
  1. 0
    ChrisB
    1. 0
      Matzeeee
      1. 0
        Der Martin
  2. 0
    fastix®
    1. 0
      Gunnar Bittersmann
      1. 0

        Kurze Frage, kurze Antwort

        fastix®
        • sonstiges
        1. 0
          Tom
          1. 0
            fastix®
            1. 0
              Tom
            2. 0

              Array-Datensatz-Klasse bauen?

              Tom
              1. 0
                Matti Mäkitalo
                1. 0
                  Tom
                  1. 0
                    Matti Mäkitalo
                    1. 0
                      Tom
              2. 0
                dedlfix
      2. 0
        Alexander (HH)
        1. 0
          Gunnar Bittersmann
          1. 2
            fastix®
            1. 0
              Gunnar Bittersmann
              1. 0
                fastix®
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    fastix®
                    1. 0
                      Gunnar Bittersmann
                      1. 0
                        ChrisB
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            ChrisB
                            1. 0
                              Gunnar Bittersmann
                          2. 1
                            fastix®
                            1. 0
                              Gunnar Bittersmann
                              1. 0
                                fastix®
                                1. 0
                                  Gunnar Bittersmann
                                  1. 1
                                    Der Martin
                                    1. 0
                                      Gunnar Bittersmann
                                      1. 0
                                        Der Martin
                                        1. 0
                                          Multi
                                          1. 0
                                            ChrisB
                                            1. 0
                                              Multi
                                              1. 0
                                                ChrisB
                                                1. 0
                                                  Multi
                                                  1. 0
                                                    Der Martin
                                                    1. 0
                                                      dedlfix
                                                      1. 0
                                                        Der Martin
                                                        1. 0
                                                          Sven Rautenberg
                                                        2. 0
                                                          dedlfix
                                                          1. 0
                                                            Der Martin
                                          2. 0
                                            fastix®
                                            1. 0
                                              Multi
                                    2. 0

                                      Summe eines Arrays aus Benzinpreisen u. PowerPoint-Präsentatoren

                                      fastix®
                                      • meinung
                            2. 0
                              Gunnar Bittersmann
                              1. 0
                                fastix®
                                1. 0
                                  Der Martin
                                2. 0
                                  Gunnar Bittersmann
                      2. 0
                        fastix®
          2. 0
            ChrisB
            1. 0
              Gunnar Bittersmann
              1. 0
                ChrisB
                1. 0
                  Gunnar Bittersmann
                  1. 1
                    ChrisB
                    1. 0
                      Gunnar Bittersmann
                      1. 0
                        ChrisB
                        1. 0
                          fastix®
            2. 0
              Gunnar Bittersmann
  3. 1
    Sven Rautenberg