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