"Erlend Klakegg Bergheim" <erlendkb@online.no.NOSPAM> wrote in message
news:t49H8.4198$fG3.145286@news2.ulv.nextra.no...
> "Mette Frederiksen" <rollike@frederiksen.mail.dk> skrev i melding
> news:acj5dp$aqa$1@sunsite.dk...
> > Hejsa!
> >
> > Hvornår er det lige ta man bruger disse forskellige rammer (eller hvad
det
> > nu end hedder?) når man skriver php?
[snip]
>
> <?php
> if (!isset ($string[0])) {
> echo "Dette er bare et eksempel.";
> }
> ?>
[snip]
Jeg går udfra at man skulle forestille sig at $string er en streng, og må
derfor gøre opmærksom
på at det som Erlend har skrevet er "gammel" (deprecated) syntaks. Det
virker stadig men den
nye syntaks er:
$string{0}
Da svaret til Mettes spørgsmål ikke er helt så ligetil, vil jeg forsøge mig
med en hurtig forklaring
af de forskellige "klammer".
Curly Braces / Krøllede parenteser: {} - Bruges til 3 ting.
1) Til at indeksere en streng.
Har du f.eks. strengen $string="abcdefg" kan du få fat i det 6 bogstav i
strengen således:
$sixthLetter = $string{5}
(Læg mærke til at det er position nr. 5 der giver det 6. bogstav, da det
første bogstav har
position nr 0.)
2) Til variable-variables
Har vi f.eks. en variabel $x1="test" og en variabel $i=1
Så vil ${'x'.$i} være et variable-variable udtryk for variablen $x1
3) Til at gruppere kildekode i logiske bloke.
Som f.eks. hvis man ønsker at mere end en statement i en if-sætning:
if( $x==1 ) {
$x++;
$y--;
}
Hvis $x er lig 1, lægger vi 1 til $x og trækker 1 fra $y.
Står det f.eks. således:
if( $x==1 )
$x++;
$y--;
Betyder det:
Hvis $x er lig 1 ligger vi til til x.
Bagefter trække vi en fra y (uanset hvad $x er)
Læg mærke til at de fleste nok vil betragte det sidste if eksempel som
dårlig kode, da
indenteringen, nemt kan narre en til at tro $y også kun vil blive
eksekveret hvis $x==1
De fleste ville nok skrive således:
if( $x==1 ) $x++;
$y--;
Eller måske således:
if( $x==1 )
$x++;
$y--
Den sidste bryder jeg mig personligt ikke om, men jeg bryder mig i det
hele tager ikke
om at man laver if sætninger uden at gruppere tilfældene i {} - jeg vil
helst skrive
således:
if( $x==1 ) {
$x++;
}
$y--;
Nu er der ingen tvivl og det vil være nemt for mig at tilføje statements
til if-sætningen.
Parenteser: () - Bruges til 4 ting.
Selvom mange måske ikke ville skelne imellem de 3 første, da de alle ligner
funktionskald.
1) Til language constructs
F.eks. array() og echo(), som man godt kan vælge at betragte som
funktioner, men det
er det ikke. Det er language constructs, jeg vil ikke komme nærmere
end på forskellen,
da den ikke er væsentlig for forståelsen af mit indlæg..
Ved brugen af echo er () valg-fri, og mangle undlader dem ofte.
2) Til funktioner:
F.eks. når du kalder dem: $dbConn = mysql_connect($host, $user,
$passwd);
Eller hvis du laver dine egne funktioner:
function hello_world() {
echo "Hello, wold
}
Her har () ikke den store betydning, men de skal dog være der. Har
du f.eks. en funktioner
der skal have argumenter:
function sigHejTil($user) {
echo "Hej ".$user;
}
bruges () til at angive hvilke argumenter du forventer at funktionen
bliver kaldt med.
Læg mærke til at vi her også bruge curly-braces til at gruppere de
til funktionen hørende
statements. Så vidt jeg ved er det her _ikke_ tilladt at udelade
dem.
3) Til objekter:
$objUser = new User();
Hvor din klasse f.eks. ser således ud:
class User {
var $name;
function User() {
$this->name=NULL;
}
}
Igen kan du bruge () til at angive parametre:
$objUser = new User("Mette");
Hvor din klasse ser således du:
class User {
var $name;
function User( $name ) {
$this->name = $name;
}
}
4) Til ændring af præcedens:
F.eks. er
3*4+2 = 14
Fordi * har højere præcedens end + (Man ganger før man plusser).
Men:
3*(4+2) = 18
Fordi jeg nu med en parentes har markeret at 4+2 skal ske før vi
ganger.
På det niveau jeg har indtryk af at du (Mette) er nu tror jeg at du bare
skal betragte de 3
første som funktioner.
Braces / Firkantede parenteser: [] Bruges til 1 ting.
Til at indeksere arrays. Man skelner mellem indekserede arrays og
associative arrays.
Indekserede arrays vil alle værdierne ligge på en bestemt position i
array'et.
F.eks.
$arrTest[3]
betyder det 4. element i array'et $arrTest (Igen starte vi fra position
0).
I associative arrays vil elementerne være associerede med en værdi.
F.eks.
$arrTest['navn']
betyder det element i array'et der er associeret med nøglen 'navn'.
Man kan også stadig bruge [] til at indeksere i en streng, men som jeg
startede hele den smøre
med at sige er det "gammel" syntaks. Det virker stadig, men det er
"deprecated".
Det var sådan lige et hurtigt gennemløb, for yderligere detaljer, vil jeg
give Jacob (som også har
svaret på Mettes indlæg) ret, dog vil jeg være så flink at specificere det
lidt yderligere :)
Læs: <
http://dk.php.net/manual/en/langref.php>
MVH Per Thomsen,
http://www.pert.dk/