Avatar billede kischi Novice
01. juli 2014 - 11:19 Der er 12 kommentarer og
1 løsning

sidste ord skal ikke slutte med et komma

Hej eksperter,

Jeg er i gang med at lave en side, et af funktionerne er at personer kan vælge flere ting ud fra en liste.

De forskellige som de vælger, får jeg så vist på deres profil, og alle tingene bliver adskilt med et komme, men det sidste ord slutter jo så også med det komma. Har jeg mulighed for at i sidste ord ikke slutte med kommaet.

Dette er min kode som viser kommaet.

    <?php foreach($jobs as $job){
                        echo $job->name.",";
                        }?> 

Tak
Avatar billede codeadmin Nybegynder
01. juli 2014 - 11:42 #1
Til at starte med skal jeg måske sige jeg på ingen måde er en ørn. Men mon ikke du kan bruge en end() funktion?

Ellers tænker jeg at du måske kan skrive det sådan her:

$antal = count($jobs);
$i = 0;
foreach($jobs as $job) {
    echo $job->name.",";
   
    if($i === $antal) {
        //Funktion til at fjerne sidste tegn.
    }else{
        $i++;
    }
}

Ovenstående er ikke testet - og vides ikke om det overhovedet ville du. Var bare en tanke jeg fik.
Avatar billede kischi Novice
01. juli 2014 - 11:58 #2
Tak for dit svar.

Det virker desværre ikke. Der sker ikke nogen ændring.

Nu ser hele kodestumpen sådan ud:

            <?php

$antal = count($jobs);
$i = 0;
foreach($jobs as $job) {
    echo $job->name.",";
   
    if($i === $antal) {
        //Funktion til at fjerne sidste tegn.
    }else{
        $i++;
    }
}

            ?>
Avatar billede codeadmin Nybegynder
01. juli 2014 - 12:05 #3
foreach($jobs as $job){
    echo $job->name.",";
   
    if ($job === end($jobs)){
        $sidste = substr_replace($jobs ,"",-1);
        echo $sidste;
    }
}

Nu satte du noget kode ind istedet for min kommentar i foregående eksempel - ikke?
Avatar billede kischi Novice
01. juli 2014 - 12:19 #4
Tak, men det virker desværre heller ikke. :(

Og nej, jeg satte ikke noget kode ind istedet for din kommentar:  //Funktion til at fjerne sidste tegn.

Skulle jeg havde gjort det?

Tak
Avatar billede codeadmin Nybegynder
01. juli 2014 - 12:21 #5
Ja hvis den skal gøre noget så skal du.

"//Funktion ....." er bare en kommentar - den gør ingenting.
Avatar billede kischi Novice
01. juli 2014 - 12:46 #6
Ja, men jeg troede det var det der kom efter som du kommenterede på.

Spørgsmålet var jo, hvordan jeg kan få den til ikke at skrive det sidste komme.
Så jeg ved ikke hvad jeg skulle skrive istedet for din kommentar for at fjerne det sidste komme.
01. juli 2014 - 13:29 #7
Måske skulle du placere kommaet før ordene i stedet for efter ordene.  Først echoer du det første ord i $jobs, derefter for resten af ordene i $jobs echoer du komma efterfulgt af ordet.
Så kan du ikke bruge foreach.  Jeg har ikke arbejdet med arrays et stykke tid, så den følgende (ikke testede) syntaks skal måske rettes til, men ideen er denne:

echo $jobs[0]->name;
for($i = 1; $i < count($jobs); $i++)
echo " ,".$jobs[$i]
Avatar billede kurtmo Novice
01. juli 2014 - 13:35 #8
Prøv at vende den rundt: :-)

$comma = "";
foreach($jobs as $job){
    echo $comma.$job->name;
    $comma = ",";
}
01. juli 2014 - 13:47 #9
#8, ja, den er også fiks.  Men under alle omstændigheder commaet før ordene.
Avatar billede kischi Novice
01. juli 2014 - 15:28 #10
Yes perfekt, nu virker det.

Nu ser koden sådan ud:

<?php

$comma = "";
foreach($jobs as $job){
    echo $comma.$job->name;
    $comma = ", ";
}

            ?>

Du kan svare så giver jeg point.

Tusind tak for hjælpen.
Avatar billede arne_v Ekspert
02. juli 2014 - 03:00 #11
Hvis man er til kompakt kode saa:

echo implode(',', array_map(function($job) { return $job->name; }, $jobs));
Avatar billede kischi Novice
06. juli 2014 - 12:40 #12
Tak for jeres svar alle sammen.
Jeg endte med at bruge #8 Kurtmo.
Så hvis du sender et svar så giver jeg point.

Og Arne_v, tak for dit sidste svar, men jeg havde allerede forsøgt med den anden løsning og den virkede fint. Men eller tusind tak for hjælpen.
Avatar billede kischi Novice
07. juli 2014 - 12:22 #13
Idet jeg ikke har fået et svar er jeg nødt til selv at lukke tråden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester