Gå til innhold

Prøver å lære meg bruk av { } | Gikk ikke bra!


Anbefalte innlegg

Heisann. Nuub-scripter litt forsatt jeg. Nå har jeg bare lagd et script for morroskyld for å prøve å teste ut if og else og å sette { og } riktig. Men det gikk ikke HELT slik jeg trodde. Bladd litt rundt nå, men finner ikke ut hvordan man gjør det riktig. Kan noen hjelpe meg PLX?

 

<?
$Name = "Thomas";
$Mellomnavn = "Kent";
$Etternavn = "Remy";

{ if ($Name == "Thomas")
          { if ($Mellomnavn == "Kent")
                      { if ($Etternavn == "Remy")
                      echo "Ditt navn er $Etternavn , $Name $Mellomnavn";
                      }

                      { if ($Etternavn !== "Remy")
                      echo "Ditt navn er $Mellomnavn , $Name . <br /> Men ikke
                      $Etternavn , $Name $Mellomnavn";
                      }
          { if ($Mellomnavn !== "Kent")
                      { if ($Etternavn == "Remy")
                      echo "Ditt navn er ikke $Etternavn , $Name $Mellomnavn . <br /> Men 
                      $Etternavn , $Name";
                      }

                      { if ($Etternavn !== "Remy")
                      echo "Ditt navn er ikke $Mellomnavn , $Name . <br /> Men 
                      $Name";
                      }
          }

?>

 

Testside: http://vikings-of-norway.com/Navn.php

 

Kan noen også hjelpe meg med å sette inn else hvis ingen av if'ene stemmer slik at scriptet slutter? Fikk bare feilmeldinger på det også. . .

 

:)

 

- Thomas

Endret av TheClown
Lenke til kommentar
Videoannonse
Annonse

Bare et tips, det kan skape problemer med variabler inne i en string. F.eks:

 

echo "Ditt navn er $Etternavn , $Name $Mellomnavn";

 

Kan skrives som:

 

echo "Ditt navn er {$Etternavn} , {$Name} {$Mellomnavn}";

 

eller

 

echo "Ditt navn er " . $Etternavn . " , " . $Name . " " . $Mellomnavn;

Endret av mhbakke
Lenke til kommentar

Jeg ser at du har fått svar på hvordan, men jeg mener at det er greiere å huske hvordan ting virker hvis man også vet _hvorfor_ det er sånn.

 

Først {}. De brukes i hovedsak til tre ting i PHP.

 

a) "Kroppen" til klasser og funksjoner må være definert med { og }.

function MyFunction($argument)
{  //Start blokk
 echo "Code goes in here.";
} //Slutt blokk

 

b) En gruppe kommandoer som står mellom {} kalles en blokk. En blokk regnes som en kode-enhet. Blokker brukes ikke bare til å definere kroppen til klasser og funksjoner, men også når du har flere ting du vil gjøre etter at du har utført en sjekk eller om du vil gjøre flere ting i en løkke.

if ($check === true)
{
  echo "Check is true";
  $variable = function('argument');
}
else
  echo "Check is false";

Som du ser her så trenger du ikke { og } når det kun er _en_ linje som følger etter else, men man kunne ha skrevet...

else
{
  echo "Check is false";
}

Personlig så mener jeg det siste er en god regel fordi det fjerner den typen feil som gjerne oppstår klokken fire på natten. :)

 

c) For å interpolere assosiative matriser i en streng.

$myArray = array('navn' => 'BlueEagle', 'sted' => 'Alta');
echo "Jeg heter {$myArray['navn']} og kommer fra {$myArray['sted']}.";

Normalt så kan man skrive echo "variabelen: $myArray[0]" om man har nummerisk indeks, men når man skal bruke strenger i indeksen så må man definere variabelen innenfor krølleparantheser. Du kan (men jeg anbefaler det IKKE)i de fleste tilfeller skrive echo "Jeg heter $myArray[navn] og kommer fra $myArray[sted]"; men dette er _IKKE_ riktig. Grunnen til at det fungerer er at PHP sjekker etter konstantene navn og sted og om de ikke er definert så bruker den strengverdiene 'navn' og 'sted'. Dette vil ikke virke slik man vil tro om noen plutselig definerer en konstant med det navnet. Du kan heller ikke bruke reserverte ord uten å bruke '-er rundt strengen.

 

Håper det forklarer saken litt bedre. c",)

Lenke til kommentar
Bare et tips, det kan skape problemer med variabler inne i en string. F.eks:

 

echo "Ditt navn er $Etternavn , $Name $Mellomnavn";

 

Kan skrives som:

 

echo "Ditt navn er {$Etternavn} , {$Name} {$Mellomnavn}";

 

eller

 

echo "Ditt navn er " . $Etternavn . " , " . $Name . " " . $Mellomnavn;

8533128[/snapback]

 

Jeg har laert at PHP sjekker strings som bruker " " for variabler. Derfor burde det vel ga fint med

echo "Ditt navn er $Etternavn , $Name $Mellomnavn";

 

 

echo 'Ditt navn er $Etternavn , $Name $Mellomnavn'; derimot...

 

echo ' '; er ogsa bittelitt raskere enn echo " ";

 

Hvorfor skal man bruke { } rundt variablene. Gjelder dette ogsa inni echo ' '; ?

Lenke til kommentar

Jeg har faktisk bare støtt på dette problemet med vanlige hermetegn ("), men trodde uansett php ville få problemer med å skille variabler og string (dvs variabel navnet vil bli en del av stringen, ikke innholdet) :hmm: Men kan godt hende at det fungerer med echo 'Noe $variabel';...

Lenke til kommentar
Jeg har faktisk bare støtt på dette problemet med vanlige hermetegn ("), men trodde uansett php ville få problemer med å skille variabler og string (dvs variabel navnet vil bli en del av stringen, ikke innholdet) :hmm:  Men kan godt hende at det fungerer med echo 'Noe $variabel';...

8534641[/snapback]

 

PHP
<?php

 

$foo "bar";

 

echo 'Dette er noe $foo'// Returnerer "Dette er noe $foo"

 

echo 'Dette er noe {$foo}'// Returnerer "Dette er noe {$foo}"

 

echo "Dette er noe $foo"// Returnerer "Dette er noe bar"

 

echo "Dette er noe {$foo}"// Returnerer det samme som over

 

?>

 

Bruker man enkeltsnutter går teksten tvers igjennom PHP-parseren, og ingenting blir parset. Bruker man dobbelsnutter blir teksten parset, og verdien til variablene følger med.

Lenke til kommentar
PHP
<?php

 

echo "Dette er noe $foo"; // Returnerer "Dette er noe bar"

 

echo "Dette er noe {$foo}"; // Returnerer det samme som over

 

?>

 

8534819[/snapback]

 

Hva er forskjellen pa de to? Og nar brukes de?

Lenke til kommentar
PHP
<?php

 

echo "Dette er noe $foo"; // Returnerer "Dette er noe bar"

 

echo "Dette er noe {$foo}"; // Returnerer det samme som over

 

?>

 

8534819[/snapback]

 

Hva er forskjellen pa de to? Og nar brukes de?

8536035[/snapback]

Et godt spørsmål som jeg ikke har noe svar på. Eneste jeg vet er at IPB bruker det for å printe variabler i templates. Men har selv aldri brukt det i noen av mine script.

Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor
PHP
<?php

 

echo "Dette er noe $foo"// Returnerer "Dette er noe bar"

 

echo "Dette er noe {$foo}"// Returnerer det samme som over

 

?>

 

8534819[/snapback]

 

Hva er forskjellen pa de to? Og nar brukes de?

8536035[/snapback]

Et godt spørsmål som jeg ikke har noe svar på. Eneste jeg vet er at IPB bruker det for å printe variabler i templates. Men har selv aldri brukt det i noen av mine script.

8536892[/snapback]

 

Du skal bruke {} når du skal skrive ut ein variabel fra ein array med tekst index.

 

Eksempel:

PHP
<?php

 

$foo['bar'] = "bar";

 

echo "Dette er noe $foo['bar']"/*

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,

expecting T_STRING or T_VARIABLE or T_NUM_STRING in

H:PHP Projectsarraytest.php on line 5

*/

 

echo "Dette er noe {$foo['bar']}"// Returnerer Dette er noe bar

 

?>

 

Edit; Edit funksjonen fungerer ikkje rett :/

Endret av Shadows0
Lenke til kommentar

// Returnerer det samme som over

 

altsa Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,

expecting T_STRING or T_VARIABLE or T_NUM_STRING in

H:PHP Projectsarraytest.php on line 5

 

 

?

 

 

Da er det jo ikke noe vits :ermm:

Lenke til kommentar
Som du ser her så trenger du ikke { og } når det kun er _en_ linje som følger etter else, men man kunne ha skrevet...

Det gjelder ikke bare etter else, men i if, while og sikkert en del andre funksjoner

eks

PHP
<?php

if ($test==1)

noe;

else

noe_annet;

 

$i=0;

while ($i<5)

echo $i++;

?>

 

Men som nevnt så kan det være litt mer ryddig og lett lest å bruke { }

Lenke til kommentar
Klikk for å se/fjerne innholdet nedenfor
PHP
<?php

 

echo "Dette er noe $foo"// Returnerer "Dette er noe bar"

 

echo "Dette er noe {$foo}"// Returnerer det samme som over

 

?>

 

8534819[/snapback]

 

Hva er forskjellen pa de to? Og nar brukes de?

8536035[/snapback]

Et godt spørsmål som jeg ikke har noe svar på. Eneste jeg vet er at IPB bruker det for å printe variabler i templates. Men har selv aldri brukt det i noen av mine script.

8536892[/snapback]

 

Du skal bruke {} når du skal skrive ut ein variabel fra ein array med tekst index.

 

 

Gjelder også ved bruk av objekter, eller bruk av statiske metoder (tror jeg);

 

$bruker = new Bruker;

echo "Hei, {$bruker->brukernavn}. Du var her sist {$bruker->sist_sett->to_str} dager siden";

echo "Hei, foo! {Bruker::statisk_metode()}!";

 

Det er i hvert fall en god regel å slenge {} rundt variabler som puttes i strenger, blant annet fordi det er lettere å finne igjen variablene senere, de blir mer synlige i koden. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...