Avatar billede andersdp Nybegynder
14. januar 2005 - 11:30 Der er 9 kommentarer og
1 løsning

in array

$forbidden = array("banan", "kirsebær", "vandmelon");
if (in_array("vandmelon", $forbidden))
{
vandmelon forbudt
}

Det fungerer som det skal.

Men kan jeg også tjekke på en substring i array'et, f.eks:

$forbidden = array("banan", "kirsebær", "vandmelon");
if (in_array("melon", $forbidden))
{
melon er en del af vandmelon og er dermed forbudt
}


Kan det lade sig gøre?
Avatar billede morteeart Nybegynder
14. januar 2005 - 11:37 #1
1.

<?
$forbidden = array("banan", "kirsebær", "vandmelon");
if (in_array("vandmelon", $forbidden))
{
echo "vandmelon er forbudt";
}
?>

virker da fint. Mht. nr. 2 , så måske med en regex, men er ikke sikker på at de virker på arrays.
Avatar billede morteeart Nybegynder
14. januar 2005 - 11:47 #2
løsning på spm 2 (taget fra kommentarene på php.net)

<?php

$forbidden = array("banan", "kirsebær", "vandmelon");

function array_search_bit($search, $array_in)
{
  foreach ($array_in as $key => $value)
  {
  if (strpos($value, $search) !== FALSE)
  return $key;
  }

  return FALSE;
}

if(array_search_bit("melon", $forbidden))
{
  echo "melon er forbudt";
}
?>
Avatar billede andersdp Nybegynder
14. januar 2005 - 11:57 #3
Det virker ikke lige umiddelbart.
Roder lige med det, ifølge første kommentar her: http://dk.php.net/in_array
Avatar billede morteeart Nybegynder
14. januar 2005 - 11:57 #4
huh ?

begge stykker kode virker fint på min pc.
Avatar billede andersdp Nybegynder
14. januar 2005 - 12:15 #5
Ja, det gør det også som det står der.
MEN, hvis man ændrer array'et til dette:

$forbidden = array("bananmelon", "kirsebær", "vandmelon");

Og altså lader det forbudte ord indgå to gange, så fejler tjekket - prøv selv...
Avatar billede andersdp Nybegynder
14. januar 2005 - 13:06 #6
Jeg kan ikke få det til at fungere ordentligt, så indtil videre er jeg gået tilbage til en almindelig in_array.

Afventer lige og ser om der dukker en løsning op.
Avatar billede morteeart Nybegynder
14. januar 2005 - 13:41 #7
hvis du ændre scriptet lidt:

<?
$forbidden = array("bananmelon","kirsebær", "vandmelon");

function array_search_bit($search, $array_in)
{
  foreach ($array_in as $key => $value)
  {
  if (strpos($value, $search) !== FALSE)
    return true;
  }
  return false;
}

if(array_search_bit("melon", $forbidden))
{
  echo "melon er forbudt";
}
?>

så virker det fint. før retunerede det en key, nu retunere det bare true/false.
Avatar billede andersdp Nybegynder
17. januar 2005 - 08:37 #8
Ja, det dur :)

Smid et svar...
Avatar billede andersdp Nybegynder
25. maj 2005 - 12:00 #9
Skal vi få den lukket?
Avatar billede andersdp Nybegynder
09. august 2005 - 12:01 #10
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester