Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
 
 
 

Effiziente Darstellung von Suchergebnissen: Produkte in übersichtlichen Reihen mit PHP array_chunk() organisieren

Sie befinden sich: Home > Php Tutorial > Array in Teile aufsplitten

Array in Teile aufsplitten


Eintrag am:  16.08.2010
Hits / Besucher:  4726
Sprache:  Deutsch
Kategorie:  Fortgeschrittene Tut...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Auf der Startseite eines Webshops haben Benutzer die Möglichkeit, nach Produkten zu suchen. Das Suchergebnis wird dabei als Array aus der Datenbank zurückgegeben, welches eine Sammlung von Produkten enthält, die den Suchkriterien entsprechen. Um diese Produkte auf der Webseite ansprechend und übersichtlich darzustellen, möchten Sie nicht einfach eine einfache Liste anzeigen. Stattdessen streben Sie an, beispielsweise immer vier Artikel je Zeile zu präsentieren. Dies ermöglicht eine ästhetisch ansprechende Darstellung und verbessert die Benutzererfahrung, da Kunden die Produkte leichter vergleichen und auswählen können.

Um diese Anforderung umzusetzen, können Sie das Array mit den Suchergebnissen in kleinere Arrays zerlegen, die jeweils eine Reihe von Produkten repräsentieren. Zum Zerlegen eines Arrays ist die PHP array_chunk()-Funktion besonders geeignet. Diese Funktion teilt ein großes Array in mehrere kleinere Teilarrays auf, basierend auf einer von Ihnen definierten Größe. So können Sie beispielsweise ein Array mit 20 Produkten in fünf Teilarrays mit jeweils vier Produkten aufteilen.

Grafik zeigt den Prozess der Darstellung von Suchergebnissen in einem Webshop: Benutzer sucht nach Produkten, Daten werden aus der Datenbank abgerufen, ein Array mit Produkten wird zurückgegeben, das Array wird in Teile aufgeteilt, und die Produkte werden in Reihen angezeigt. Der Ablauf ist als Weg mit Symbolen dargestellt.

Eine weitere Anwendungsmöglichkeit von array_chunk() wäre die Auflistung eines Inhaltsverzeichnisses für eine Astronomie-Webseite. Hier könnten Sie eine lange Liste von astronomischen Begriffen oder Objekten in übersichtliche Abschnitte unterteilen, um die Navigation für den Benutzer zu erleichtern.

Der Syntax von array_chunk() in PHP

array array_chunk ( array $input , int $size , bool $preserve_keys = false )

Die Funktion array_chunk() in PHP teilt ein Array $input in kleinere Teilarrays auf. Der erste Parameter $input ist das zu teilende Array. Der zweite Parameter $size gibt an, wie viele Elemente jedes Teilarray enthalten soll. Der optionale dritte Parameter $preserve_keys bestimmt, ob die ursprünglichen Schlüssel des Arrays beibehalten werden sollen.

Parameter im Detail

  • $input: Das Eingabearray, das Sie aufteilen möchten. Dies kann ein numerisches oder assoziatives Array sein.
  • $size: Die Anzahl der Elemente, die jedes Teilarray enthalten soll. Wenn die Gesamtzahl der Elemente im Eingabearray nicht durch $size teilbar ist, wird das letzte Teilarray weniger Elemente enthalten.
  • $preserve_keys (optional): Ein boolescher Wert (true oder false). Wenn true gesetzt ist, bleiben die ursprünglichen Schlüssel des Eingabearrays in den Teilarrays erhalten. Standardmäßig ist dieser Parameter false, was bedeutet, dass die Schlüssel in den Teilarrays neu nummeriert werden, beginnend bei 0.

Funktionsweise von array_chunk()

Die Funktion erstellt ein neues numerisches Array, dessen Elemente die Teilarrays sind. Jedes Teilarray enthält eine Sequenz von Elementen aus dem Eingabearray, basierend auf der angegebenen Größe $size. Wenn $preserve_keys auf false gesetzt ist, werden die Schlüssel in den Teilarrays neu zugewiesen. Andernfalls bleiben die Schlüssel aus dem Eingabearray erhalten.

Beispiel
Betrachten wir ein konkretes Beispiel, um die Funktionsweise von array_chunk() besser zu verstehen:

<?php

$array = array('sonne', 'mond', 'sterne');
echo 'Ausgabe ohne optionalen Parameter $preserve_keys<br>';
print_r(array_chunk($array, 2));
echo 'Ausgabe mit optionalem Parameter $preserve_keys = true<br>';
print_r(array_chunk($array, 2, true));
?>

Analyse des Beispiels

  1. Erstellung des Arrays: Das Array $array enthält drei Elemente: 'sonne', 'mond' und 'sterne'.

  2. Erster Aufruf von array_chunk() ohne $preserve_keys:

    array_chunk($array, 2);
    
    • Das Array wird in Teilarrays mit jeweils 2 Elementen aufgeteilt.
    • Da $preserve_keys nicht angegeben ist, ist es standardmäßig false.
    • Die Schlüssel in den Teilarrays werden neu nummeriert, beginnend bei 0.

    Ausgabe:

    Array
    (

    [0] => Array
    (

    [0] => sone
    [1] => mond

    )
    [1] => Array
    (

    [0] => sterne

    )

    )

    
    

  3. Zweiter Aufruf von array_chunk() mit $preserve_keys = true:

    array_chunk($array, 2, true); 
    • Das Array wird erneut in Teilarrays mit jeweils 2 Elementen aufgeteilt.
    • $preserve_keys ist auf true gesetzt, daher bleiben die ursprünglichen Schlüssel erhalten.

    Ausgabe:

    Array
    (

    [0] => Array
    (

    [0] => sone
    [1] => mond

    )
    [1] => Array
    (

    [2] => sterne

    )

    )

    
    

Interpretation der Ergebnisse

  • Ohne $preserve_keys: Die Schlüssel in den Teilarrays werden neu nummeriert. Dies ist unproblematisch, wenn die Schlüsselwerte nicht von Bedeutung sind.
  • Mit $preserve_keys = true: Die ursprünglichen Schlüssel aus dem Eingabearray bleiben erhalten. Dies ist wichtig, wenn die Schlüssel relevante Informationen enthalten, wie beispielsweise eindeutige Identifikatoren.

Praktische Anwendung im Webshop

Stellen Sie sich vor, Sie haben ein Array von Produkten aus Ihrer Datenbank:

$produkte = array(

array('id' => 101, 'name' => 'T-Shirt', 'preis' => 19.99),
array('id' => 102, 'name' => 'Jeans', 'preis' => 49.99),
array('id' => 103, 'name' => 'Sneaker', 'preis' => 79.99),
array('id' => 104, 'name' => 'Jacke', 'preis' => 99.99),
array('id' => 105, 'name' => 'Mütze', 'preis' => 14.99),
array('id' => 106, 'name' => 'Schal', 'preis' => 24.99),
// ... weitere Produkte
);

Sie möchten diese Produkte in einem Raster anzeigen, wobei jede Zeile vier Produkte enthält. Durch die Verwendung von array_chunk() können Sie das Array in Teilarrays mit jeweils vier Elementen aufteilen:

$produkt_zeilen = array_chunk($produkte, 4);


foreach ($produkt_zeilen as $reihe) {
echo '<div class="produktreihe">';
foreach ($reihe as $produkt) {
echo '<div class="produkt">';
echo '<h3>' . htmlspecialchars($produkt['name']) . '</h3>';
echo '<p>Preis: ' . number_format($produkt['preis'], 2, ',', '.') . ' €</p>';
echo '</div>';
}
echo '</div>';
}

Erläuterung des Codes

  • Aufteilung des Arrays: $produkt_zeilen = array_chunk($produkte, 4); teilt das ursprüngliche Produktarray in Teilarrays mit jeweils vier Produkten.
  • Ausgabe der Produktreihen: Mit der äußeren foreach-Schleife iterieren Sie über die Produktreihen.
  • Ausgabe der einzelnen Produkte: Mit der inneren foreach-Schleife iterieren Sie über die Produkte innerhalb einer Reihe und geben die Produktinformationen aus.

Vorteile dieser Methode

  • Übersichtlichkeit: Durch die Aufteilung in Reihen mit einer festen Anzahl von Produkten wird die Darstellung übersichtlicher.
  • Flexibilität: Sie können die Anzahl der Produkte pro Zeile leicht anpassen, indem Sie den Parameter $size in array_chunk() ändern.
  • Skalierbarkeit: Unabhängig von der Gesamtzahl der Produkte bleibt das Layout konsistent.

Vertiefung: Verwendung von $preserve_keys

Wenn die Schlüssel der Elemente wichtig sind, beispielsweise wenn sie die Produkt-IDs repräsentieren, sollten Sie $preserve_keys auf true setzen. Dies stellt sicher, dass die Schlüsselwerte in den Teilarrays erhalten bleiben und korrekt referenziert werden können.

Beispiel mit $preserve_keys = true:

$produkt_zeilen = array_chunk($produkte, 4, true);


foreach ($produkt_zeilen as $reihe) {
foreach ($reihe as $schluessel => $produkt) {
/* Verwenden Sie $schluessel als Produkt-ID */
echo 'Produkt-ID: ' . $schluessel . "\n";
echo 'Name: ' . htmlspecialchars($produkt['name']) . "\n";
echo 'Preis: ' . number_format($produkt['preis'], 2, ',', '.') . ' €'. "\n\n";
}
}

Ausgabe:

Produkt-ID: 0

Name: T-Shirt
Preis: 19,99 €

Produkt-ID: 1
Name: Jeans
Preis: 49,99 €

Produkt-ID: 2
Name: Sneaker
Preis: 79,99 €

Produkt-ID: 3
Name: Jacke
Preis: 99,99 €

Produkt-ID: 4
Name: Mütze
Preis: 14,99 €

Produkt-ID: 5
Name: Schal
Preis: 24,99 €

Vergleich mit anderen Array-Funktionen

Während array_chunk() dazu dient, ein Array in mehrere Teilarrays aufzuteilen, gibt es Funktionen, die Arrays zusammenführen:

  • array_merge(): Fügt ein oder mehrere Arrays zu einem Array zusammen. Die Werte werden in der Reihenfolge ihrer Arrays angehängt. Bei numerischen Schlüsseln werden die Werte neu nummeriert, bei assoziativen Schlüsseln bleiben die Schlüssel erhalten.

    $array1 = array('a' => 1, 'b' => 2);
    
    $array2 = array('c' => 3, 'd' => 4);
    $zusammen = array_merge($array1, $array2);
    /* Ergebnis: array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4); */

  • array_combine(): Erstellt ein neues Array, indem es ein Array von Schlüsseln mit einem Array von Werten kombiniert. Die Anzahl der Elemente in beiden Arrays muss gleich sein.

    $keys = array('rot', 'grün', 'blau');
    
    $values = array('Apfel', 'Blatt', 'Himmel');
    $kombiniert = array_combine($keys, $values);
    /* Ergebnis: array('rot' => 'Apfel', 'grün' => 'Blatt', 'blau' => 'Himmel'); */

Diese Funktionen erfüllen unterschiedliche Aufgaben im Vergleich zu array_chunk(). Während array_merge() und array_combine() dazu dienen, Arrays zusammenzufügen oder zu kombinieren, wird array_chunk() verwendet, um ein einzelnes Array in mehrere Teile zu zerlegen.

Weitere Anwendungsfälle von array_chunk()

  • Paginierung: Bei der Entwicklung von Seiten, die eine große Anzahl von Einträgen anzeigen, kann array_chunk() verwendet werden, um die Daten in Seiten aufzuteilen.

    $seiten = array_chunk($alle_eintraege, $eintraege_pro_seite);
    
    $aktuelle_seite = $seiten[$seitenzahl - 1];
    /* Seitenzahl beginnt bei 1 */
  • Verarbeitung großer Datenmengen: Wenn Sie große Datenmengen verarbeiten müssen, können Sie diese mit array_chunk() in kleinere Teile aufteilen, um Speicherressourcen effizienter zu nutzen.

  • Gruppierung von Elementen: Bei der Darstellung von Daten in Gruppen, wie z.B. bei Tabellen mit festen Spaltenzahlen, kann array_chunk() helfen, die Daten entsprechend zu strukturieren.

Wichtige Hinweise

  • Leistung: Bei sehr großen Arrays kann die Verwendung von array_chunk() zu erhöhtem Speicherverbrauch führen. In solchen Fällen sollten Sie alternative Methoden in Betracht ziehen, wie z.B. das Abrufen von Daten in Segmenten direkt aus der Datenbank.

  • Schlüsselverwaltung: Wenn die Schlüssel der Elemente wichtig sind, achten Sie darauf, den Parameter $preserve_keys entsprechend zu setzen. Andernfalls können Schlüssel verloren gehen oder überschrieben werden.

  • Datenintegrität: Stellen Sie sicher, dass die Aufteilung des Arrays die logische Struktur Ihrer Daten nicht beeinträchtigt. Beispielsweise sollten zusammengehörige Daten nicht durch die Aufteilung getrennt werden.

Fazit

Die Funktion array_chunk() ist ein vielseitiges Werkzeug in PHP, das es Ihnen ermöglicht, Arrays effizient in kleinere, besser handhabbare Teilarrays zu zerlegen. Durch das Verständnis der Parameter und der Funktionsweise können Sie Ihre Datenstrukturen optimal an die Anforderungen Ihrer Anwendung anpassen und eine bessere Benutzererfahrung bieten.

 

Tags:

 

Artikel hinzufügen bei:
         
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.