Hansi: Probleme mit zweidimensionale Arrays

Hallo!

Ich habe mein ewiges Problem immer noch nicht gelöst da es wahrscheinlich am Verständnisproblem liegt. Aber ein wenig bin ich ja schon voran gekommen...

Ich möchte mir ein Warenkorb-System bauen wo die der Artikel mit der entsprechenden Anzahl in Warenkorb gelegt wird.

Und das mache hiermit: $_SESSION['warenkorb'][$art_nr] += $anzahl;

Ich möchte in warenkorb die Anzahl ablegen mit $art_nr definiere ich mein Artkikel. Falls im warenkorb schon 2 Artikel zur art_nr 55 liegen soll er bei gleicher art_nr mit $anzahl = 3 hinzufügen.

So möchte ich es in meinem Array schreiben. Anschliessend möchte ich mein Array wieder auslesen um zusehen was alles in dem Array abgessteht?

Mit max(); möchte ich die höchste art_nr wiedergeben. Im folge Schritt soll das Array solange durchlaufen werden, bis der max Wert erreicht ist.

Aber dieser Aufruf wird mir als Fehler deklariert warum weiß ich nicht?

$max = max($_SESSION['warenkorb'][$art_nr]);
// Diese Zeile wird mir als falsch angemeckert.

Ich weiß auch nicht ob das so funktioniert wie ich es mir vorgestellt habe? Ich habe bereits schon einigen Manuel gelesen aber komme trotzdem nicht wirklich weiter. In einem anderen Posting wurde mir gesagt dass das Array in PHP andes funktioniert als wie ind C.

Vielleicht kann mir jemand helfen oder sagen wie es richtig heißt?
Schliesslich möchte ich auch noch was lernen!

Gruß Hansi

function in_warenkorb_legen($art_nr, $anzahl)
{ ?>
<a href="/login/logout.php">session destroy</a><br>
<a href="index.php">index.php</a><br>
<br><?php

echo "anzahl: ".$anzahl."<br>";
  if (!empty($anzahl))
  {
  echo "art_nr: ".$art_nr;
  $_SESSION['warenkorb'][$art_nr] += $anzahl;
  }

$max = max($_SESSION['warenkorb'][$art_nr]);

for ($i = 0; $i < $max; $i++ )
  {
  echo "<br>";
  $array_pos = $i;
  echo "array_pos: <a href='$i'>".$array_pos."</a>    ";

echo $wert = $_SESSION['warenkorb'][$i]."<br>";
  echo $art_nr."<br>";
  echo $anzahl."<br>";

}

echo "<br>";

}

  1. Huhu Hansi

    Und das mache hiermit: $_SESSION['warenkorb'][$art_nr] += $anzahl;

    Mit max(); möchte ich die höchste art_nr wiedergeben.

    $max = max($_SESSION['warenkorb'][$art_nr]);
    // Diese Zeile wird mir als falsch angemeckert.

    genau, denn $_SESSION['warenkorb'][$art_nr] ist kein Array.
    Probier es mal mit max($_SESSION['warenkorb']).

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Huhu Hansi

      Und das mache hiermit: $_SESSION['warenkorb'][$art_nr] += $anzahl;

      Mit max(); möchte ich die höchste art_nr wiedergeben.

      $max = max($_SESSION['warenkorb'][$art_nr]);
      // Diese Zeile wird mir als falsch angemeckert.

      genau, denn $_SESSION['warenkorb'][$art_nr] ist kein Array.
      Probier es mal mit max($_SESSION['warenkorb']).

      »»

      Hallo

      max($_SESSION['warenkorb']);

      das ist der max Wert von $anzahl das heißt wenn ich 200 Artikel bestelle ist der max Wert 199 aber ich brauche den max Wert von [$art_nr]

      Gruß Hansi

      1. Hi,

        max($_SESSION['warenkorb']);

        das ist der max Wert von $anzahl das heißt wenn ich 200 Artikel bestelle ist der max Wert 199 aber ich brauche den max Wert von [$art_nr]

        array_keys($_SESSION['warenkorb']) liefert dir ein Array bestehend aus den Artikel-Nummern. max(array_keys($_SESSION['warenkorb'])) sollte dir also das gewünschte Ergebnis liefern.

        Du solltest dir aber überlegen, ob du wirklich das ganze Array durchlaufen musst, denn bei einer Artikelnummer von 1000 sind dies bereits 1000 Durchläufe, obwohl evtl. nur ein Artikel bestellt wurde. Evtl. solltest du da lieber mit foreach (http://de.php.net/manual/de/control-structures.foreach.php) arbeiten.

        Gruß,
        Andreas.