Zweidimensionales Array: Ausgabe begrenzen

la1ha

Grünschnabel
hallo,
ich habe ein zweidimensionales array
z.Bsp.

Code:
$array = array(
                           array( 'a'=>12 , 'aa'=>mann),
                           array('a'=>2 4, 'aa'=>mann),
                           array('a'=>13 , 'aa'=>frau),
                            array('a'=>444 , 'aa'=>kind),
                            array('a'=>35 , 'aa'=>frau),
                            array('a'=>53 , 'aa'=>mann),
                            array('a'=>75 , 'aa'=>mann)
);
meine Frage lautet wie kann ich die wiederholten Einträge (z.Bsp. hier mann,frau) nach wahl ausgeben,
wenn ich 2 auswähle dann wird mir ganze array aber wo 'mann' steht max. 2mal gezeigt und wenn ich 3 dann 3mal ausgegeben.
so wenn ich maximal 2 wähle
Code:
Array
(
    [0] => Array
        (
            [a] => 12
            [aa] => mann
        )

    [1] => Array
        (
            [a] => 24
            [aa] => mann
        )

    [2] => Array
        (
            [a] => 13
            [aa] => frau
        )

    [3] => Array
        (
            [a] => 444
            [aa] => kind
        )

    [4] => Array
        (
            [a] => 35
            [aa] => frau
        )
    
)
bin sehr dankbar für jeden Vorschlag.
 
Statt einer Komplettlösung erhältst du von mir eine Umschreibung, die dich zum Ziel führt. So lernst du direkt selbstständig mit PHP umzugehen.

Pseudocode für ein beliebiges "Eingabe_Array":
Code:
c = 3;  // Anzahl der gewünschten Elemente
s = "Mann"; // Gewünschte Elemente
for i from 0 to count(Eingabe_Array)
{
  // Abbruchbedingung
  if (c = 0)
  {
    break;
  }

  // Iteration
  if (Eingabe_Array[i][aa] = s)
  {
    Ausgabe_Array erweitern um Eingabe_Array[i];
    c -= 1;
  }
}

Das wird reichen. Nötige Grundlagen erfährst du hier: http://tut.php-q.net/
 
Zuletzt bearbeitet:
danke ersmal,die frage war vielleicht nicht sehr klar.
der User gibt mittel selectbox wieviel Bilder jeder Fotograf die bis 100 mal vorkommen, maximal angezeigt werden abhängig von wieviel Bilder in dieser Kategorie er besitzt,d.h der user will nur ein oder 2 bilder ... maximal vom jeden Fotograf sehen.
Array war nur ein einfaches Beispiel
 
danke ersmal,die frage war vielleicht nicht sehr klar.
der User gibt mittel selectbox wieviel Bilder jeder Fotograf die bis 100 mal vorkommen, maximal angezeigt werden abhängig von wieviel Bilder in dieser Kategorie er besitzt,d.h der user will nur ein oder 2 bilder ... maximal vom jeden Fotograf sehen.
Array war nur ein einfaches Beispiel

Bitte? Das "verstehe" ich so:
Der Benutzer kann die Anzahl der gezeigten Bilder eingrenzen.
Ein Fotograf hat bis zu 100 Bilder.

So etwas findet man üblicherweise in einer Datenbank wieder. Dort werden die Zugehörigkeiten der Bilder gespeichert, sowie ihr Pfad zur Datei.

Wie hattest du es vor zu lösen?
Wie liegen die Bilder bei dir vor?
 
natürlich ist alles in der DB und habe alle Ergebnisse der SQL-Abfrage in einem
2D. Array gespeichert, warum ist eine andere Frage..jeder fotograf darf nach Eingabe des Users nur 2 oder 3 ....... n mal auftauchen.
 
ich weiss wie man das mit sql abfrage macht,aber wenn jemand ein idee hat wie man es wie ich oben beschrieben habe,will ich gern zu meine kenntnisse zufügen.danke
 
natürlich ist alles in der DB und habe alle Ergebnisse der SQL-Abfrage in einem
2D. Array gespeichert, warum ist eine andere Frage..jeder fotograf darf nach Eingabe des Users nur 2 oder 3 ....... n mal auftauchen.

ich weiss wie man das mit sql abfrage macht,aber wenn jemand ein idee hat wie man es wie ich oben beschrieben habe,will ich gern zu meine kenntnisse zufügen.danke

Bitte achte auf Rechtschreibung und Ausdruck.
Wie man es mit dem gegebenen Array bestimmt, habe ich dir bereits gesagt.
Gibt es Probleme damit? Entspricht die Ausgabe nicht dem erwarteten?
 
Bitte achte auf Rechtschreibung und Ausdruck.
Ok, es tut mir leid.

Wie man es mit dem gegebenen Array bestimmt, habe ich dir bereits gesagt.
Gibt es Probleme damit? Entspricht die Ausgabe nicht dem erwarteten?
Leider nicht,die Ausgabe sieh so aus
Code:
Array
(
    [0] => Array
        (
            [a] => 12
            [aa] => mann
        )

    [1] => Array
        (
            [a] => 24
            [aa] => mann
        )

    [5] => Array
        (
            [a] => 53
            [aa] => mann
        )

    [6] => Array
        (
            [a] => 75
            [aa] => mann
        )

)

und die Ausgabe, die ich wollte muss so aussehen,wenn der User max. 2 auswählte
Code:
Array
(
    [0] => Array
        (
            [a] => 12
            [aa] => mann
        )

    [1] => Array
        (
            [a] => 24
            [aa] => mann
        )

    [2] => Array
        (
            [a] => 13
            [aa] => frau
        )

    [3] => Array
        (
            [a] => 444
            [aa] => kind
        )

    [4] => Array
        (
            [a] => 35
            [aa] => frau
        )
    
)
 
Ah. Ok!
Das lässt sich mit ein bisschen Rookie-Wissen und dem ersten Algorithmus leicht lösen. Es fehlt ein schlichtes Array zum Zählen / Merken:

PHP:
c = 2;  // Anzahl der gewünschten Elemente
Merker_Array = Array; // Zähler
for i from 0 to count(Eingabe_Array)
{
  // Zählen
  if (Merker_Array[ Eingabe_Array[i][aa] ] nicht gesetzt)
  {
    Merker_Array[ Eingabe_Array[i][aa] ] = 0;
  }

  // Iteration
  if (Merker_Array[ Eingabe_Array[i][aa] ] < c)
  {
    Ausgabe_Array erweitern um Eingabe_Array[i];
    Merker_Array[ Eingabe_Array[i][aa] ] = Merker_Array[ Eingabe_Array[i][aa] ] + 1;
  }
}
 
Zurück