Variablen in Array ansprechen oder zusammenpacken?
Maxi
- php
Hallo,
ich habe folgendes Problem. In dem Beispiel Array steht 2 mal die Art_Nr=1.
array("Art_Nr=1&anzahl=1","Art_Nr=10&anzahl=2","Art_Nr=1&anzahl=2");
Nun möchte ich die beiden Postionen in eine Position schreiben
Also Art_Nr=1&anzahl=1 und Art_Nr=1&anzahl=2 möchte ich die Anzahl zusammen rechnen und das array soll dann nur noch so aussehen:
array("Art_Nr=1&anzahl=3","Art_Nr=10&anzahl=2");
Nur wie spreche ich Art_Nr und anzahl als Variable an oder wandel es zur Variable um?
Gruß Maxi
Du kannst die einzelnen Array-Inhalte wie folgend in Variablen umwandeln:
$vari01 = array[0];
$vari02 = array[1];
usw...
Das auslösen der einzelen Positionen kannst du in PHP auch lösen (um ganz ehrlich zu sein, mir fällt um die Uhrzeit nur noch JS ein, bei JS wär es ja substring())
Die Abfrage der tw. identischen Werte kannst du z.B. über if-Abfragen lösen.
Ich hoffe ich habe deine Frage richtig verstanden...
Gruss
Hallo,
ich habe folgendes Problem. In dem Beispiel Array steht 2 mal die Art_Nr=1.
array("Art_Nr=1&anzahl=1","Art_Nr=10&anzahl=2","Art_Nr=1&anzahl=2");
Nun möchte ich die beiden Postionen in eine Position schreiben
Also Art_Nr=1&anzahl=1 und Art_Nr=1&anzahl=2 möchte ich die Anzahl zusammen rechnen und das array soll dann nur noch so aussehen:
array("Art_Nr=1&anzahl=3","Art_Nr=10&anzahl=2");
Nur wie spreche ich Art_Nr und anzahl als Variable an oder wandel es zur Variable um?
Gruß Maxi
Du kannst die einzelnen Array-Inhalte wie folgend in Variablen umwandeln:
$vari01 = array[0];
$vari02 = array[1];
usw...
Das auslösen der einzelen Positionen kannst du in PHP auch lösen (um ganz ehrlich zu sein, mir fällt um die Uhrzeit nur noch JS ein, bei JS wär es ja substring())
Die Abfrage der tw. identischen Werte kannst du z.B. über if-Abfragen lösen.
Ich hoffe ich habe deine Frage richtig verstanden...
GrussHallo,
ich habe folgendes Problem. In dem Beispiel Array steht 2 mal die Art_Nr=1.
array("Art_Nr=1&anzahl=1","Art_Nr=10&anzahl=2","Art_Nr=1&anzahl=2");
Nun möchte ich die beiden Postionen in eine Position schreiben
Also Art_Nr=1&anzahl=1 und Art_Nr=1&anzahl=2 möchte ich die Anzahl zusammen rechnen und das array soll dann nur noch so aussehen:
array("Art_Nr=1&anzahl=3","Art_Nr=10&anzahl=2");
Nur wie spreche ich Art_Nr und anzahl als Variable an oder wandel es zur Variable um?
Hallo!
Das habe ich leider nicht wirklich verstanden.
So nun gehe ich ein Schritt weiter was wäre denn wenn ich mein String so umwandel?
array("1&1","10&2","1&2");
Das was man dort im Array sieht schreibe ich mit folgenden PHP Code rein:
$_SESSION['warenkorb'][] = $art_nr.'&'.$anzahl;
Meine Frage ist nun, die Werte die im Array stehen ist das immer ein String oder wäre das nun in meinem Fall ein Zahl somit ein intiger?
Wenn es en String wäre hätte ich ein Problem weil ich damit nicht rechnen kann.
Vielleicht kann mir da jemand bei weiter helfen?
Gruß Maxi
Hello,
Hallo!
Das habe ich leider nicht wirklich verstanden.
ich auch nicht
So nun gehe ich ein Schritt weiter was wäre denn wenn ich mein String so umwandel?
array("1&1","10&2","1&2");
Woher kommt denn dieser dämliche String? Wieso baust Du nicht gleich ein vernünftiges Array auf für den Warenkorb?
Das was man dort im Array sieht schreibe ich mit folgenden PHP Code rein:
$_SESSION['warenkorb'][] = $art_nr.'&'.$anzahl;
Meine Frage ist nun, die Werte die im Array stehen ist das immer ein String oder wäre das nun in meinem Fall ein Zahl somit ein integer?
So, wie Du es reinschreibst ins Array, ist es ein Array of Strings. Und rechnen kannst Du nicht damit, weil PHP das '&' nicht ein eine Zahl umwandeln kann.
Besser wäre es also, Du schreibst gleich
$_SESSION['warenkorb'][$art_nr] = $anzahl;
oder auch
$_SESSION['warenkorb'][$art_nr] += $anzahl;
wenn die Menge hinzugefügt werden soll.
Aber dann hätte ich mir mein anderes Posting ja sparen können.
Schau Dir nochmal [pref:t=70098&m=403573] an. Vielleicht hilft Dir das weiter?
Liebe Grüße aus http://www.braunschweig.de
Tom
$_SESSION['warenkorb'][] = $art_nr.'&'.$anzahl;
Meine Frage ist nun, die Werte die im Array stehen ist das immer ein String oder wäre das nun in meinem Fall ein Zahl somit ein integer?
So, wie Du es reinschreibst ins Array, ist es ein Array of Strings. Und rechnen kannst Du nicht damit, weil PHP das '&' nicht ein eine Zahl umwandeln kann.
Besser wäre es also, Du schreibst gleich
$_SESSION['warenkorb'][$art_nr] = $anzahl;
oder auch
$_SESSION['warenkorb'][$art_nr] += $anzahl;
Du sagtest das es bei mir ein String ist wenn ich es in Array schreibe dann verstehe ich nicht wieso ich die Variable aussen array wieder auselesen kann oder er gibt das richtige Ergebnis wieder oder ist hier ein Denkfehler? Da es ja läuft!
$_SESSION['warenkorb'][] = $art_nr.'&'.$anzahl;
$count = count($_SESSION['warenkorb']);
for ($i = 0; $i < $count; $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>";
}
Aber wenn ich es nun so schreibe
$_SESSION['warenkorb'][$art_nr] += $anzahl;
$art_nr steht bestimmt nicht in der Reihenfolge und $anzahl muß ja auch an der richtigen $art_nr zugewiesen werden!
Das heißt wird nun $anzahl in das Feld warenkorb geschrieben? Und $art_nr ist die Stelle im array wo es rein soll? Sagen wir mal Nr 234
springt der in php automatisch zu der Nummer oder muß ich das durch eine Schleife laufen lassen. Das verwirrt mich nun, weil Du schreibst in dem anderen Posting das PHP Arrays anders sind als C Arrays
Gruß Maxi
Hello,
springt der in php automatisch zu der Nummer oder muß ich das durch eine Schleife laufen lassen. Das verwirrt mich nun, weil Du schreibst in dem anderen Posting das PHP Arrays anders sind als C Arrays
Schau Dir bitte nochmal [pref:t=70098&m=403573] an.
Du brauchst die richtige Vorstellung von den Arrays.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello Maxi,
In dem Beispiel Array steht 2 mal die Art_Nr=1.
array("Art_Nr=1&anzahl=1","Art_Nr=10&anzahl=2","Art_Nr=1&anzahl=2");
Nun möchte ich die beiden Postionen in eine Position schreiben
Deine Array-Konstruktion ist schon falsch aber mindestens ungünstig.
Wenn Du das nicht unbedingt so übernehmen musst dann bau Dir ein anderes Array, in dem die Artikelnummer der Key ist und die Menge als Value drinsteht.
Löse als erstes mal das Array auf:
<?php ### warenkorb.php ###
error_reporting(E_ALL); # only for Debug
$_doof = array
("Art_Nr=1&anzahl=1","Art_Nr=10&anzahl=2","Art_Nr=1&anzahl=2");
$_warenkorb = array();
foreach ($_doof as $artikel) # "Art_Nr=1&anzahl=1"
{
$_artikel = array();
parse_str($artikel,$_artikel);
echo "<pre>";
print_r($_artikel);
echo "</pre>";
# if (isset($_warenkorb[$_artikel["Art_Nr"]]))
# {
$_warenkorb[$_artikel["Art_Nr"]] += $_artikel["anzahl"];
# }
# else
# {
# $_warenkorb[$_artikel["Art_Nr"]] = $_artikel["anzahl"];
# }
}
echo "<hr>";
echo "<pre>";
print_r($_warenkorb);
echo "</pre>";
?>
Ich hoffe, Du steigst durch.
Ich wollte das "mal eben schnell" hinschreiben und hatte schon ganz viele explode() drin, da fiel mir ein, dass es ja parse_str() gibt...
Na, so verrückte Datenweitergaben mache ich auch nicht. Aber wer weiss schon, was Du da gerade aus-hackst. ;-)
Liebe Grüße aus http://www.braunschweig.de
Tom