Letztes Zeichen entfernen
Carmen
- php
Hallo,
wie kann ich erreichen, dass bei meiner Ausgabe das letzt "-" nicht mehr mit ausgegeben wird?
<dt>Größen:</dt>
<dd>
<?php $schuhGroessenAusgabe = schuhGroessen($mysqli, $object->a_id);
foreach($schuhGroessenAusgabe as $array){
echo $array['ag_groesse'] . " - ";
}
?>
</dd>
Das Ergebnis schaut derzeit so aus:
1 - 3 - 10 - 11 -
Moin,
wie kann ich erreichen, dass bei meiner Ausgabe das letzt "-" nicht mehr mit ausgegeben wird?
<dt>Größen:</dt> <dd> <?php $schuhGroessenAusgabe = schuhGroessen($mysqli, $object->a_id); foreach($schuhGroessenAusgabe as $array){ echo $array['ag_groesse'] . " - "; } ?> </dd>
entweder, indem du die Einzelwerte nicht direkt ausgibst, sondern zunächst in einem String sammelst und dann zum Schluss das letzte " - " am Ende wieder abschneidest.
Oder noch einfacher, indem du implode() auf das Array anwendest, wobei ich aber nicht ganz sicher bin, ob das bei solchen assoziativen Arrays (also solchen mit alphanumerischen Keys) auch wie erwartet funktioniert.
EDIT: Vergiss das implode() in diesem Fall, du greifst ja noch auf ein Unterelement zu.
So long,
Martin
<?php
echo implode( ' - ', schuhGroessen($mysqli, $object->a_id) );
?>
Man kann auch trim() mit auf den Weg geben, was es wegtrimmen soll und dann gäbe es noch preg_replace(). Beide sind aber hier Unsinn, weil Du einen so hübschen Array hast.
Nochwas:
foreach($schuhGroessenAusgabe as $array){
echo $array['ag_groesse'] . " - ";
}
Tu das nicht! Was Du als $array bezeichnest ist hier keiner, denn Du erwartest einen String. IDu verwirrst Dich selbst. Ich verwende für sowas diszipliniert $s, $str oder eben $item. Diese sind in meinem Kopf genau wie $i, $k, $l für temporäre Zwecke wie Iteratoren reserviert.
Hallo,
Tu das nicht! Was Du als $array bezeichnest ist hier keiner, denn Du erwartest einen String. IDu verwirrst Dich selbst. Ich verwende für sowas diszipliniert $s, $str oder eben $item. Diese sind in meinem Kopf genau wie $i, $k, $l für temporäre Zwecke wie Iteratoren reserviert.
also lieber so?
foreach($schuhGroessenAusgabe as $item){
echo $item['wg_wert'] . " - ";
}
Hallo,
Tu das nicht! Was Du als $array bezeichnest ist hier keiner, denn Du erwartest einen String. IDu verwirrst Dich selbst. Ich verwende für sowas diszipliniert $s, $str oder eben $item. Diese sind in meinem Kopf genau wie $i, $k, $l für temporäre Zwecke wie Iteratoren reserviert.
also lieber so?
Nein, nimm die andere Antwort. Ich hatte da was übersehen...
Hallo,
Nein, nimm die andere Antwort. Ich hatte da was übersehen...
vielen vielen Dank für deine Hilfe. Da hätte ich noch eine Frage zu meiner Funktion, die gerade noch so ausschaut:
function schuhGroessen($mysqli, $wo) {
$stmt = $mysqli->prepare("SELECT ag_id,
ag_artikelID,
ag_groesse,
wg_id,
wg_bezeichnung,
wg_wert
FROM produkte_groessen
LEFT JOIN groessen
ON produkte_groessen.ag_groesse = groessen.wg_id
WHERE produkte_groessen.ag_artikelID=?");
$stmt->bind_param("s", $wo);
$stmt->execute();
$stmt->bind_result($ag_id,
$ag_artikelID,
$ag_groesse,
$wg_id,
$wg_bezeichnung,
$wg_wert);
while ($stmt->fetch()){
$schuhGroessen[] = array(
'ag_id' => $ag_id,
'ag_artikelID' => $ag_artikelID,
'ag_groesse' => $ag_groesse,
'wg_id' => $wg_id,
'wg_bezeichnung' => $wg_bezeichnung,
'wg_wert' => $wg_wert
);
}
return $schuhGroessen;
}
Ist es irgendwie möglich, dass die Werte innerhalb von $schuhGroessen[] = array() dynamisch gefüllt werden? Vergesse ich ein Wert zickt die ganze Funktion.
Bevor die Frage aufkommt, warum ich solche Bezeichnungen wie ag_ und wg_ nutzte, ich bin früher wenn ich zwei Tabellen verbunden habe immer mit den ids usw. durcheinander gekommen, die in beiden Tabellen gleich hießen. Deshalb die *_ Bezeichnungen davor.
Ist es irgendwie möglich, dass die Werte innerhalb von $schuhGroessen[] = array() dynamisch gefüllt werden? Vergesse ich ein Wert zickt die ganze Funktion.
Mach es Dir einfach "einfach".
mysqli_fetch_assoc() bzw. mysqli_result::fetch_assoc sind hier angebracht. Da bekommst Du ganz bequem und automatisch die Spaltennamen der Antwort (also entweder die Spaltennamen der Tabelle oder, wenn Du mit select foo as bar ... arbeitest, die Aliase, hier bar) als Keys des Arrays bzw. Haschs... nebst dem zugehörigen Wert natürlich.
Dann musst Du also nur noch die Abfrage korrekt notieren. "Schwerer Vorteil" würde ich sagen.
Bevor die Frage aufkommt, warum ich solche Bezeichnungen wie ag_ und wg_
No Problem. Mach ich manchmal auch so. Allerdings eher in einem Konstrukt wie
SELECT
`foo`.`id` as `foo_id`,
`foo`.`name` as `foo_name`,
`bar`.`id` as `bar_id`
FROM
foo, bar ...
Ich sehe gerade, Du hast ja als Item einen Array bzw. Hash...
also :
<?php
$arSchuhGroessen = schuhGroessen($mysqli, $object->a_id);
$arTmp = array();
forach ( $arSchuhGroessen as $item ) {
$arTmp[] = $item['ag_groesse'];
}
echo implode( ' - ', $arTmp );
?>
@@Carmen
echo $array['ag_groesse'] . " - ";
Wo kommen die Daten her? Bist du sicher, dass du hier auf htmlspecialchars()
verzichten kannst?
LLAP 🖖
sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
Wo kommen die Daten her? Bist du sicher, dass du hier auf
htmlspecialchars()
verzichten kannst?
Geht dich das etwas an? Du meckerst an allem rum, jede Diskussion ist mit dir überflüssig!