Gå til innhold

In_array fungerer ikke etter hensikt


Anbefalte innlegg

Skrevet

$array_humor = file('../array/humor.txt');

if (in_array("Borte", $array_humor)) {
echo "jippi";
}

 

..array/humor.txt :

 

Opptatt

--------

Borte

På jobb

På skolen

--------

Allergisk

Avslappet

Boblende

Bitter

...osv

 

men dette funker ikke... tror noe av problemet er "På jobb" som har et mellomrom. Hva skjer egentlig her, og hvordan kan jeg få det til å ikke skje?

Videoannonse
Annonse
Skrevet

Array ( [0] => [1] => Opptatt [2] => -------- [3] => Borte [4] => På jobb [5] => På skolen [6] => -------- [7] => Allergisk [8] => Avslappet osv...

 

grunnen til at jeg tror på jobb og på skolen er årsaken til feilen her, er at om jeg tar bort de to, fungerer det perfekt...

Skrevet

nei... er en liten nøtt. har forsøkt å sette trim() rundt "Borte", dessuten forsøkt "Borte " og " Borte", mener å huske at det blir lagt til space i array av og til. men dette er rart...

Skrevet

kan jo hende linjeskift ligger i strengen, kan jo evt prøve å fjerne det..

 

eller du kan jo prøve med å traversere det... med no debug..

foreach ($array as $element) {

if ($element=="Borte")

echo "Jippi";

else

echo "'$element' matcher ikke<br>";

}

Skrevet (endret)

' ' matcher ikke

'Opptatt ' matcher ikke

'-------- ' matcher ikke

'Borte ' matcher ikke

 

osv... :(

 

edit: trim($element) fungerer!! jippi :D men lurer fremdeles på hva som skjedde med in_array...

Endret av fjartan
Skrevet

fint :)

 

ser ut som det ble lagt på en ekstra " " i slutten av strengen.. om du ser etter. Er derfor in_array ikke klarer å ta dem, siden de har en ekstra space i seg... alle sammen.

Skrevet

m'm... ser det nå ja. mener å huske at jeg forsøkte in_array("Borte ", $array_humor) oxo, men skitt au, hvorfor endre det som funker... ;)

Skrevet

forklaringen er enkel:

 

hver linje i en tekstfil inneholder også et linjeskift!

 

"Borte" vil ikke gi match i din array fordi du har elementet "Borte\n" i arrayen. dvs Borte med en linjeskift etter. trim fjerner linjeskifter så ergo fungerer det da.

 

det beste er å beholde din tirm kode, msiden linjeskift kan være enten \r\n eller \n avhengig av platform.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...