---
title: "in_array fråga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/108721-in-array-fråga"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "aasah"
published: "2004-08-07T14:19:05.000Z"
updated: "2004-08-08T10:35:06.000Z"
replies: 9
views: 281
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/108721-in-array-fråga"
---

# in_array fråga

## #1 — aasah, 2004-08-07T14:19Z

Hoppas ni inte tröttnar på mig...  :x Vad är det jag inte ser? :q

Ska inte in_array ge true om den sträng man letar efter finns i arrayen? :q Var 17 är felet?

```php
function checkContent(&$quiz) {

   $types = array("RADIO", "CHECKBOX", "SELECT", "TEXT");

   //...

         if ($keyQ > 0 && $keyA > 0) {
            //....            
         }
         elseif ($keyQ > 0) {                    //d)
            $quiz[$keyQ][0][1] = strtoupper($quiz[$keyQ][0][1]);
            echo "quiz[$keyQ][0][1] = ".$quiz[$keyQ][0][1]."<BR>";
            if (!in_array($quiz[$keyQ][0][1], $types)) {
               echo "<pre>Available types are: ";
               foreach($types as $t) echo "$t     ";
               echo "</pre><BR>";
               printParseError("Fel typ av fråga, f = $keyQ, typ = ".$quiz[$keyQ][0][1]);
            }
        }
    //...
}
```

Skriver ut:

> quiz\[1\]\[0\]\[1\] = RADIO 
> 
> Available types are: RADIO     CHECKBOX     SELECT     TEXT     
> 
> ParseError i quizfilen: Fel typ av fråga, f = 1, typ = RADIO

Om den nu har värdet RADIO, hur kan den hamna i anropet till printParseError???

Permalänk: https://www.webforum.nu/p/108721

## #2 — Duffer, 2004-08-07T14:44Z

Förstår inte riktigt vad problemet är, du har inte satt någon else alltså skriver den ju ut allt efter villkoret "elseif ($keyQ \> 0)"

Permalänk: https://www.webforum.nu/p/1403502

## #3 — aasah, 2004-08-07T14:50Z

Du tittar på fel if-sats tror jag... Det är den inre: 

```php
if (!in_array($quiz[$keyQ][0][1], $types))
```

som inte verkar funka. Eller så är det något jättestort jag inte ser...

Permalänk: https://www.webforum.nu/p/1403505

## #4 — Duffer, 2004-08-07T15:02Z

ooops sorry my bad =/ tyckte jag hade sett en mer if någon stanns ;)
men då får jag ställa frågan istället, vad vill du att den ska göra/kolla

Permalänk: https://www.webforum.nu/p/1403506

## #5 — Matte, 2004-08-07T15:19Z

Kan där finnas någon radbrytning, mellanslag eller liknande i början eller slutet av $quiz\[$keyQ\]\[0\]\[1\] ?

Någon skillnad om du gör så här ?

```php
if (!in_array(trim($quiz[$keyQ][0][1]), $types))
```

Permalänk: https://www.webforum.nu/p/1403511

## #6 — Duffer, 2004-08-07T15:21Z

Testat att lägga in egna värden och skriva om det lite, men kan inte hitta felet dessvärre =/

Tror på det matte säger om mellanslag, in_array är ju "case sensitive" ;)

Permalänk: https://www.webforum.nu/p/1403513

## #7 — aasah, 2004-08-07T15:44Z

> **Matte skrev:**
>
> Kan där finnas någon radbrytning, mellanslag eller liknande i början eller slutet av $quiz\[$keyQ\]\[0\]\[1\] ?
> ....

Hur funkar foreach? :q Funktionen inleds med:

```php
function checkContent(&$quiz) {

   $types = array("RADIO", "CHECKBOX", "SELECT", "TEXT");

   foreach ($quiz as $keyQ => $frag) {
      foreach($quiz[$keyQ] as $keyA => $alt) {
         foreach($quiz[$keyQ][$keyA] as $ix => $post) {
            //a
            $post = trim($post);
         }
         //...

         if ($keyQ > 0 && $keyA > 0) {
            //....            
         }
         elseif ($keyQ > 0) {                    //d)
            $quiz[$keyQ][0][1] = strtoupper($quiz[$keyQ][0][1]);
            echo "quiz[$keyQ][0][1] = ".$quiz[$keyQ][0][1]."<BR>";
            if (!in_array($quiz[$keyQ][0][1], $types)) {
               echo "<pre>Available types are: ";
               foreach($types as $t) echo "$t     ";
               echo "</pre><BR>";
               printParseError("Fel typ av fråga, f = $keyQ, typ = ".$quiz[$keyQ][0][1]);
            }
        }
    //...
}}
```

Borde inte det betyda att $quiz inte innehåller några otrimmade värden när detta körs? Eller funkar det inte eftersom vi är mitt i två foreach ??

Förresten... försvinner radbrytningar med trim? För en radbrytning bör där finnas före trim i alla fall...

Permalänk: https://www.webforum.nu/p/1403518

## #8 — aasah, 2004-08-07T22:04Z

Borde inte dessa två tillsammans plocka bort alla blanka och varje nyradstecken i strängen??

```php
$post = trim($post);
$post = preg_replace('/[\n\r]+/', "", $post);
```

Likväl är innehållet i min $post (betydligt längre ner) "RADIO" att se till men med längd 9!!! Och efter en del fundering har jag kommit fram till att det nog kan ligga två "nyrad" före och två efter...

Hur blir jag av med dem? :q

Permalänk: https://www.webforum.nu/p/1403682

## #9 — Matte, 2004-08-07T23:01Z

Är det för jämförelsens skull så kan du göra som jag föreslog.

Annars är det nog bättre att ge sig på källan, alltså där du byggde upp arrayen.

Du lägger en trimmad variabel i arrayen $post, men sedan använder du aldrig variabeln.

Du borde kunna göra så att du ändrar:
\[PHP\]// Ändra
$quiz\[$keyQ\]\[0\]\[1\] = strtoupper($quiz\[$keyQ\]\[0\]\[1\]);

// Till
$quiz\[$keyQ\]\[0\]\[1\] = trim(strtoupper($quiz\[$keyQ\]\[0\]\[1\]));

Permalänk: https://www.webforum.nu/p/1403706

## #10 — aasah, 2004-08-08T10:35Z

Åh! **Tusen tack, Matte!**

Jag begrep först här och nu att de värden vi når via variablerna i en foreach-slinga **också** är kopierade värden. :r Naturligtvis! Nå, den här läxan dröjer det nog innan jag glömmer!

Permalänk: https://www.webforum.nu/p/1403823

---

Tråden på webben: https://www.webforum.nu/amne/php/108721-in-array-fråga
