/ 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
Problemer med in_array()
Fra : Poul Kubel


Dato : 13-05-04 17:22

Hej

Jeg har et problem i forbindelse med brugen af in_array()

Jeg har forsøgt mig på to følgende måder:

1.

$test = implode(",", $_SESSION['bestilling']);
if (in_array($test, array(2301, 2302, 2303, 2304, 2305))) {
// så skal der ske dit og dat
}

2.

$input = $_SESSION['bestilling'];
foreach ($input as $test) {}
if (in_array($test, array(2301, 2302, 2303, 2304, 2305))) {
// så skal der ske dit og dat
}

Mit problem er at første måde kun fungerer, hvis et af tallene i arrayet
står først i $_SESSION['bestilling'], og at den anden måde kun fungerer hvis
et af tallene står sidst, så noget kunne jo tyde på at det er min brug af
foreach() og implode() den er galt med.

Er der nogen der har et forslag til hvordan jeg kan få det til at virke
uanset hvor tallet befinder sig i $_SESSION['bestilling']?

Mvh.

Poul Kubel



 
 
Johan Holst Nielsen (13-05-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 13-05-04 19:56

Poul Kubel wrote:
> $input = $_SESSION['bestilling'];
> foreach ($input as $test) {}
> if (in_array($test, array(2301, 2302, 2303, 2304, 2305))) {
> // så skal der ske dit og dat
> }
>
> Mit problem er at første måde kun fungerer, hvis et af tallene i arrayet
> står først i $_SESSION['bestilling'], og at den anden måde kun fungerer hvis
> et af tallene står sidst, så noget kunne jo tyde på at det er min brug af
> foreach() og implode() den er galt med.
>
> Er der nogen der har et forslag til hvordan jeg kan få det til at virke
> uanset hvor tallet befinder sig i $_SESSION['bestilling']?


prøv;
$input = $_SESSION['bestilling'];
foreach($input as $test) {
if(in_array($test, array(2301, 2302, 2303, 2304, 2305))) {
// så skal der ske dit og dat
}
}

Hvad er værdien af $_SESSION['bestilling'] helt præcis? er det et
array? er det en kommasepaeret streng eller?

mvh
Johan

Poul Kubel (16-05-2004)
Kommentar
Fra : Poul Kubel


Dato : 16-05-04 10:23

Jeg tror lige jeg starter forfra og kommer med hele scriptet:

$test = implode(',', $_SESSION['bestilling']);
if (!in_array($test, array(2301, 2302, 2303, 2304, 2305))) {
echo "Test1";
}
else if (in_array($test, array(2301, 2302, 2303, 2304, 2305))) {
if (!isset($_POST['laengde'])) {
echo // formular, hvor "laengde" på varenumrene 2301-2305 skal bestemmes
}
else {
echo "Test2";
}
}

$_SESSION['bestilling'] er et array med de varenumre som en kunde har
bestilt. Varenumrene er værdier i dette array, og har 0,1,2,3...etc.. som
nøgler, afhængig af deres plads i bestillingsrækken. (0 er således den først
bestilte vare, 1 den anden etc.)

Hvis jeg bruger implode() som i ovenstående, fungerer scriptet kun hvis et
af varenumrene 2301-2305 er den første vare i arrayet
$_SESSION['bestilling']. Så snart længden er defineret udføres Test2, som
den skal. Står 2301-2305 senere i arrayet, så udføres Test1, hvilket ikke er
meningen, da et af de varenumre der skal have defineret længden, stadig
findes i arrayet.

Hvis jeg bruger foreach() er situationen omvendt - dvs. scriptet fungerer
kun hvis en af de pågældende fem varenumre står sidst i arrayet
$_SESSION['bestilling']. Desuden gentages Test1 for hver vare der opfylder
betingelsen, hvilket ikke er min mening.

Mvh.

Poul Kubel



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste