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