Array kürzen
Es tut was es soll, aber kann man das irgendwie kürzen da ich jede mögliche art versucht habe Arrays anzusprechen und nur diese mich zum Ziel brachte.
$sql = "SELECT * FROM `abc` ORDER BY RAND() LIMIT 4";
$result = $conn->query($sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list = $row;
}
if ($artikelposten == 4) {
if ($list['vkpreis']<3) {$menge40e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge40e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge40e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge40e = 1;}
if ($list[1]['vkpreis']<3) {$menge41e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge41e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge41e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge41e = 1;}
if ($list[2]['vkpreis']<3) {$menge42e = rand(200, 400);}
if ($list[2]['vkpreis']>3 && $list[2]['vkpreis']<=20) {$menge42e = rand(20, 40);}
if ($list[2]['vkpreis']>20 && $list[2]['vkpreis']<=50) {$menge42e = rand(5, 10);}
if ($list[2]['vkpreis']>50) {$menge42e = 1;}
if ($list[3]['vkpreis']<3) {$menge43e = rand(200, 400);}
if ($list[3]['vkpreis']>3 && $list[3]['vkpreis']<=20) {$menge43e = rand(20, 40);}
if ($list[3]['vkpreis']>20 && $list[3]['vkpreis']<=50) {$menge43e = rand(5, 10);}
if ($list[3]['vkpreis']>50) {$menge43e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge40e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
array($list[1]['artikel'], $list[1]['beschreibung'], $menge41e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']),
array($list[2]['artikel'], $list[2]['beschreibung'], $menge42e, $list[2]['me'], $list[2]['vkpreis'], $list[2]['rabatt'], $list[2]['rabatt2'], $list[2]['lieferungsnummer'], $list[2]['betrag']),
array($list[3]['artikel'], $list[3]['beschreibung'], $menge43e, $list[3]['me'], $list[3]['vkpreis'], $list[3]['rabatt'], $list[3]['rabatt2'], $list[3]['lieferungsnummer'], $list[3]['betrag']));
}
if ($artikelposten == 3) {
if ($list['vkpreis']<3) {$menge30e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge30e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge30e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge30e = 1;}
if ($list[1]['vkpreis']<3) {$menge31e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge31e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge31e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge31e = 1;}
if ($list[2]['vkpreis']<3) {$menge32e = rand(200, 400);}
if ($list[2]['vkpreis']>3 && $list[2]['vkpreis']<=20) {$menge32e = rand(20, 40);}
if ($list[2]['vkpreis']>20 && $list[2]['vkpreis']<=50) {$menge32e = rand(5, 10);}
if ($list[2]['vkpreis']>50) {$menge32e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge30e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
array($list[1]['artikel'], $list[1]['beschreibung'], $menge31e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']),
array($list[2]['artikel'], $list[2]['beschreibung'], $menge32e, $list[2]['me'], $list[2]['vkpreis'], $list[2]['rabatt'], $list[2]['rabatt2'], $list[2]['lieferungsnummer'], $list[2]['betrag']));
}
if ($artikelposten == 2) {
if ($list['vkpreis']<3) {$menge20e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge20e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge20e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge20e = 1;}
if ($list[1]['vkpreis']<3) {$menge21e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge21e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge21e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge21e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge20e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
array($list[1]['artikel'], $list[1]['beschreibung'], $menge21e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']));
}
if ($artikelposten == 1) {
if ($list['vkpreis']<3) {$menge10e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge10e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge10e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge10e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge10e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']));
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 375549
Url: https://administrator.de/forum/array-kuerzen-375549.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo dax4fun,
der Tread-Titel heißt "Array kürzen".
Es geht Dir aber darum Deinen Code zu verkürzen?
Leg zuerst ein leeres Array an und füge ihm situationsabgängig Elemente hinzu.
Das Folgende könnte ungetesteterweise funktionieren und vermeidet die Wiederholungen:
Gruß Frank
der Tread-Titel heißt "Array kürzen".
Es geht Dir aber darum Deinen Code zu verkürzen?
Leg zuerst ein leeres Array an und füge ihm situationsabgängig Elemente hinzu.
Das Folgende könnte ungetesteterweise funktionieren und vermeidet die Wiederholungen:
$sql = "SELECT * FROM `abc` ORDER BY RAND() LIMIT 4";
$result = $conn->query($sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list = $row;
}
$rechnungs_posten = array();
if ($artikelposten > 0) {
if ($list['vkpreis']<3) {$menge40e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge40e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge40e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge40e = 1;}
$rechnungs_posten = array($list['artikel'], $list['beschreibung'], $menge40e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
}
if ($artikelposten > 1) {
if ($list[1]['vkpreis']<3) {$menge41e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge41e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge41e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge41e = 1;}
$rechnungs_posten[1] = array($list[1]['artikel'], $list[1]['beschreibung'], $menge41e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']),
}
if ($artikelposten > 2) {
if ($list[2]['vkpreis']<3) {$menge42e = rand(200, 400);}
if ($list[2]['vkpreis']>3 && $list[2]['vkpreis']<=20) {$menge42e = rand(20, 40);}
if ($list[2]['vkpreis']>20 && $list[2]['vkpreis']<=50) {$menge42e = rand(5, 10);}
if ($list[2]['vkpreis']>50) {$menge42e = 1;}
$rechnungs_posten = array($list[2]['artikel'], $list[2]['beschreibung'], $menge42e, $list[2]['me'], $list[2]['vkpreis'], $list[2]['rabatt'], $list[2]['rabatt2'], $list[2]['lieferungsnummer'], $list[2]['betrag']),
}
if ($artikelposten > 3) {
if ($list[3]['vkpreis']<3) {$menge43e = rand(200, 400);}
if ($list[3]['vkpreis']>3 && $list[3]['vkpreis']<=20) {$menge43e = rand(20, 40);}
if ($list[3]['vkpreis']>20 && $list[3]['vkpreis']<=50) {$menge43e = rand(5, 10);}
if ($list[3]['vkpreis']>50) {$menge43e = 1;}
$rechnungs_posten = array($list[3]['artikel'], $list[3]['beschreibung'], $menge43e, $list[3]['me'], $list[3]['vkpreis'], $list[3]['rabatt'], $list[3]['rabatt2'], $list[3]['lieferungsnummer'], $list[3]['betrag']);
}
Gruß Frank
Hallo dax4fun,
ja, genau. Ein Dank und ein Gruß sind völlig überflüssig. Wir werden hier für unseren Support ohnehin zu gut bezahlt.
Mein vorhergehender Code lässt sich mit einer For-Schleife weiter kürzen und enthält dann keine Code-Wiederholungen mehr.
Er sieht dann so aus:
Wozu?
Das Topic hattest Du auf "gelöst" gesetzt.
Ist das jetzt ein neues Thema oder doch noch das alte?
Egal ob neue oder alte Frage, ich kann den Code zwar nachvollziehen, kann aber nicht erkennen was Du damit bezwecken möchtest.
Gruß Frank
ja, genau. Ein Dank und ein Gruß sind völlig überflüssig. Wir werden hier für unseren Support ohnehin zu gut bezahlt.
Mein vorhergehender Code lässt sich mit einer For-Schleife weiter kürzen und enthält dann keine Code-Wiederholungen mehr.
Er sieht dann so aus:
$sql = "SELECT * FROM `abc` ORDER BY RAND() LIMIT 4";
$result = $conn->query($sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list = $row;
}
$rechnungs_posten = array();
for ($i=0; $i < $artikelposten; $i++) {
if ($list[$i]['vkpreis']<3) {$menge40e = rand(200, 400);};
if ($list[$i]['vkpreis']>3 && $list[$i]['vkpreis']<=20) {$menge40e = rand(20, 40);};
if ($list[$i]['vkpreis']>20 && $list[$i]['vkpreis']<=50) {$menge40e = rand(5, 10);};
if ($list[$i]['vkpreis']>50) {$menge40e = 1;};
$rechnungs_posten[$i] = array($list[$i]['artikel'], $list[$i]['beschreibung'], $menge40e, $list[$i]['me'], $list[$i]['vkpreis'], $list[$i]['rabatt'], $list[$i]['rabatt2'], $list[$i]['lieferungsnummer'], $list[$i]['betrag']);
};
Wozu?
Das Topic hattest Du auf "gelöst" gesetzt.
Ist das jetzt ein neues Thema oder doch noch das alte?
Egal ob neue oder alte Frage, ich kann den Code zwar nachvollziehen, kann aber nicht erkennen was Du damit bezwecken möchtest.
- Zeile2: Fehlendes Semicolon am Zeileende
- Zeile5: Die Abfrage, ob die Variable belegt ist, sollte so erfolgen:
if (isset($$dyn_loeschen)) {tuwas;};
da andernfalls PHP einen Hinweis ausgibt, dass die Variable nicht definiert sei.
Zitat von @dax4fun:
da ich nicht weiß wie ich es in eine Foreach-Schleife der SQL-Abfrage einbauen kann, da diese ja sowieso endet wenn keine Datensätze vorhanden sind.
Wenn diese sowieso endet, wozu dann die Foreach-Schleife?da ich nicht weiß wie ich es in eine Foreach-Schleife der SQL-Abfrage einbauen kann, da diese ja sowieso endet wenn keine Datensätze vorhanden sind.
Zitat von @dax4fun:
das Ziel würde dann so ausschauen
$variable1 = $row['id'].' '.$row['artiekl'].'<br />bezeichnung '.$row['bezeichnung'].'<br /><br />'
Wenn das das Ziel ist, dann ist die Aufgabe ja gelöst (Ziel erreicht).das Ziel würde dann so ausschauen
$variable1 = $row['id'].' '.$row['artiekl'].'<br />bezeichnung '.$row['bezeichnung'].'<br /><br />'
Gruß Frank
Hallo dax4fun,
es sei Dir verziehen.
Später wäre beispielsweise jetzt.
Ist damit alles erledigt, also auch Dein gefundener Code-Schnipsel?
Gruß Frank
es sei Dir verziehen.
Später wäre beispielsweise jetzt.
Ist damit alles erledigt, also auch Dein gefundener Code-Schnipsel?
Gruß Frank