/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
adressere bestemt index i split array
Fra : Christian Hansen


Dato : 19-08-01 18:24

Hej

Er der nogen, der kan fortælle mig, om følgende er mulig i php. jeg kan
ikke lige få det til at virke.

I perl kan man fange et bestemt index fra en funktion, der returnerer et
array på følgende måde (eks. ved split funktionen):

(split(/;/,"et;to;tre"))[1] vil retunere "to".

Men hvordan kan man gøre dette i php?

MVH Christian


 
 
Niels Andersen (19-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 19-08-01 18:37

"Christian Hansen" <webmaster@telescopium.dk> wrote in message
news:3B7FF638.9070809@telescopium.dk...
> I perl kan man fange et bestemt index fra en funktion, der returnerer et
> array på følgende måde (eks. ved split funktionen):
>
> (split(/;/,"et;to;tre"))[1] vil retunere "to".

$array = explode(';', 'et;to;tre');
echo $array[1]; // skriver "to".

--
Mvh.

Niels Andersen



Christian Hansen (19-08-2001)
Kommentar
Fra : Christian Hansen


Dato : 19-08-01 18:52

Niels Andersen wrote:
> "Christian Hansen" <webmaster@telescopium.dk> wrote in message
> news:3B7FF638.9070809@telescopium.dk...
>
>>I perl kan man fange et bestemt index fra en funktion, der returnerer et
>>array på følgende måde (eks. ved split funktionen):
>>
>>(split(/;/,"et;to;tre"))[1] vil retunere "to".
>>
>
> $array = explode(';', 'et;to;tre');
> echo $array[1]; // skriver "to".


Men man kan ikke gøre det på en gang altså echo explode(';','et;to;tre')[1]

Grunden til at jeg gerne ville kunne dette er, at jeg skal finde ud af,
hvilket sprog min bruger ønsker at se min side i.

Jeg laver så følgende udvælgelse:

$language = ($lang) ? $lang : split("[\.]", $HTTP_HOST)[0];

Hvis brugeren har kaldt siden med argument lang=dk så får han siden på
dansk. Hvis kan derimod har brugt subdomæne dk.domæne.dk får han også
siden på dansk. Men $lang er øverst og er denne erklæret bestemmer den
sprog uanset subdomæne.

MVH Christian


Christian Joergensen (19-08-2001)
Kommentar
Fra : Christian Joergensen


Dato : 19-08-01 19:18

Christian Hansen <webmaster@telescopium.dk> wrote:

> $language = ($lang) ? $lang : split("[\.]", $HTTP_HOST)[0];

kan snildt omskrives til:

$host = explode(".", $HTTP_HOST);
$language = ($lang) ? $lang : $host[0];

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Christian Hansen (19-08-2001)
Kommentar
Fra : Christian Hansen


Dato : 19-08-01 19:26



Det er jeg helt med på. jeg troede bare, at man kunne undgå den ekstra
variabel, som du nu har ( $host ).

Det kan man nok bare ikke.


MVH Christian

P.S. Hvorfor bruge explode frem for split? Hvorfor er der overhovedet 2
funktioner der tilsyneladende gør nøjagtigt det samme?

Christian Joergensen wrote:
> Christian Hansen <webmaster@telescopium.dk> wrote:
>
>
>>$language = ($lang) ? $lang : split("[\.]", $HTTP_HOST)[0];
>>
>
> kan snildt omskrives til:
>
> $host = explode(".", $HTTP_HOST);
> $language = ($lang) ? $lang : $host[0];
>
>



Frank Sørensen (20-08-2001)
Kommentar
Fra : Frank Sørensen


Dato : 20-08-01 01:28

Christian Hansen wrote:
[]
> P.S. Hvorfor bruge explode frem for split? Hvorfor er der overhovedet
> 2 funktioner der tilsyneladende gør nøjagtigt det samme?
>

Det er rigtigt, forskellen på de to funktioner er ikke umiddelbart så
stor - den består i at split() splitter på et regular expression, og
explode() splitter på en normal streng. Uden det dog er noget man mærker
med relativt små strenge, så er der altså lidt performance at spare på
at bruge explode frem for split, hvis man bare skal have splittet en
streng på et enkelt tegn eller en alm. streng, altså fordi explode()
ikke skal til at udføre en masse regular expression-analyse.

--
Mvh. Frank Sørensen
http://www.jkelloggs.dk/


Peter Brodersen (19-08-2001)
Kommentar
Fra : Peter Brodersen


Dato : 19-08-01 20:25

On Sun, 19 Aug 2001 20:18:29 +0200, Christian Joergensen
<mail@phpguru.dk> wrote:

>kan snildt omskrives til:
>
>$host = explode(".", $HTTP_HOST);
>$language = ($lang) ? $lang : $host[0];

Næeh, man har det jo stadigvæk ikke i én og samme linie, hvilket
besværliggør kodeudtræk, klipkopiering, etc.

--
- Peter Brodersen

Christian Hansen (19-08-2001)
Kommentar
Fra : Christian Hansen


Dato : 19-08-01 20:55

Peter Brodersen wrote:
> On Sun, 19 Aug 2001 20:18:29 +0200, Christian Joergensen
> <mail@phpguru.dk> wrote:
>
>
>>kan snildt omskrives til:
>>
>>$host = explode(".", $HTTP_HOST);
>>$language = ($lang) ? $lang : $host[0];
>>
>
> Næeh, man har det jo stadigvæk ikke i én og samme linie, hvilket
> besværliggør kodeudtræk, klipkopiering, etc.
>

Nemlig. Mon man blot må konstatere at php endnu ikke kan det, som jeg
efterlyser. Perl styrer

MVH Christian ( som egentlig er ret glad for php)


Christian Joergensen (20-08-2001)
Kommentar
Fra : Christian Joergensen


Dato : 20-08-01 00:08

Christian Hansen <webmaster@telescopium.dk> wrote:

>> Næeh, man har det jo stadigvæk ikke i én og samme linie, hvilket
>> besværliggør kodeudtræk, klipkopiering, etc.
>>
>
> Nemlig. Mon man blot må konstatere at php endnu ikke kan det, som jeg
> efterlyser. Perl styrer

$language = ($lang) ? $lang : array_shift(explode(".", $HTTP_HOST));

Er der mere du mener PHP ikke kan :) ?

--
Christian Jørgensen | "Ford, you're turning into a penguin"
http://www.razor.dk | "Stop it"

Peter Brodersen (19-08-2001)
Kommentar
Fra : Peter Brodersen


Dato : 19-08-01 22:42

On Mon, 20 Aug 2001 01:07:52 +0200, Christian Joergensen
<mail@phpguru.dk> wrote:

>$language = ($lang) ? $lang : array_shift(explode(".", $HTTP_HOST));
>
>Er der mere du mener PHP ikke kan :) ?

Den og array_pop løser vel kun problemet, hvis det er første eller
sidst værdi i array'et, man skal have fat i? Det er dog stadigvæk
ganske brugbart i forhold til ingenting.

Egentligt overrasker det mig, at der ikke er en funktion i forvejen
til at tilsvare [key]. Det er dog umådeligt let at lave selv, fx:

<?
function array_get ($array, $key) {
return $array[$key];
}

print array_get(explode(":","20:14:10"),1);
?>

--
- Peter Brodersen

Christian Hansen (23-08-2001)
Kommentar
Fra : Christian Hansen


Dato : 23-08-01 20:34

Christian Joergensen wrote:
> Christian Hansen <webmaster@telescopium.dk> wrote:
>
>
>>>Næeh, man har det jo stadigvæk ikke i én og samme linie, hvilket
>>>besværliggør kodeudtræk, klipkopiering, etc.
>>>
>>>
>>Nemlig. Mon man blot må konstatere at php endnu ikke kan det, som jeg
>>efterlyser. Perl styrer
>>
>
> $language = ($lang) ? $lang : array_shift(explode(".", $HTTP_HOST));
>
> Er der mere du mener PHP ikke kan :) ?
>
>


Ja, stadig ikke det, jeg spørger efter selvom array_shift() løser
ovenstående problem, så er det ikke så elegant som perls løsning. da jeg
er nødt til at bruge endnu et funktionskald ( array_shift()) og ikke
blot adressere det index i arrayet jeg ønsker værdien for. Men mon ikke
det kommer engang. PHP folkene vil jo så gerne være de bedste - og ja,
de gør sgu et godt job. PHP er virkeligt lækkert på mange områder selvom
det stadig bære rundt på nogle børnesygdomme.

MVH Christian


Christian Hansen (19-08-2001)
Kommentar
Fra : Christian Hansen


Dato : 19-08-01 21:04

hehe man gør bare sådanher:


${split("[;]","et;to;tre")}[1] returnere "to"

tada

MVH Christian



Christian Hansen wrote:
> Hej
>
> Er der nogen, der kan fortælle mig, om følgende er mulig i php. jeg kan
> ikke lige få det til at virke.
>
> I perl kan man fange et bestemt index fra en funktion, der returnerer et
> array på følgende måde (eks. ved split funktionen):
>
> (split(/;/,"et;to;tre"))[1] vil retunere "to".
>
> Men hvordan kan man gøre dette i php?
>
> MVH Christian
>



Christian Hansen (19-08-2001)
Kommentar
Fra : Christian Hansen


Dato : 19-08-01 21:08

Og så ikke alligevel. Jeg havde et andet sted i mit script, som printede
samme linie. Det virker altså ikke

ØV

Christian Hansen wrote:
> hehe man gør bare sådanher:
>
>
> ${split("[;]","et;to;tre")}[1] returnere "to"
>
> tada
>
> MVH Christian
>
>
>
> Christian Hansen wrote:
>
>> Hej
>>
>> Er der nogen, der kan fortælle mig, om følgende er mulig i php. jeg
>> kan ikke lige få det til at virke.
>>
>> I perl kan man fange et bestemt index fra en funktion, der returnerer
>> et array på følgende måde (eks. ved split funktionen):
>>
>> (split(/;/,"et;to;tre"))[1] vil retunere "to".
>>
>> Men hvordan kan man gøre dette i php?
>>
>> MVH Christian
>>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste