Carmen: Letztes Zeichen entfernen

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 -
  1. 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

    --
    Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
    - Douglas Adams, The Hitchhiker's Guide To The Galaxy
  2. implode gluet.

    <?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.

    1. 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'] . " - ";
      }
      
      1. 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...

        1. 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.

          1. 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 ...
            
    2. 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 );
      ?>
      
  3. @@Carmen

             echo $array['ag_groesse'] . " - ";
    

    Wo kommen die Daten her? Bist du sicher, dass du hier auf htmlspecialchars() verzichten kannst?

    LLAP 🖖

    --
    “There’s no such thing as an ‘average’ user, but there is such a thing as an average developer.” —Vitaly Friedman in Accessibility Matters: Meet Our New Book, “Inclusive Design Patterns”
    Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
    1. 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!