webForumDet fria alternativet

Söka i array

6 svar · 385 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

Jag vill kontrollera ifall ett nummer finns med i en array. Varför funkar inte detta:

$string = "12,13,14,15";
$selected = explode(",",$string);
if (array_key_exists('12', $selected)) {
   echo "Finns!";
}

Skriver jag bara '1' istället för '12' så hittas det, men '1' finns ju inte med i arrayen....??

MatteMedlem sedan aug. 20002 975 inlägg
#2

array_key_exists söker på index, och dina index är 0, 1, 2 och 3.

Du ska använda array_search istället.

learnMedlem sedan jan. 20051 130 inlägg
#3

Ok!

Hur tycker du jag ska använda funktionen på bästa och enklaste sätt då?

Fel:

$string = "12,13,14,15";
$selected = explode(",",$string);
if (array_search('12', $selected)) { echo "Finns!"; }

Känns lite omständigt:

   $found=array();
foreach($array as $k=>$v){
  if(strtolower($v)==strtolower($str)){
    $found[]=$v;
  }
}
$f=count($found);
if($f===0)return false;elseif($f===1)return $found[0];else return $found;
MatteMedlem sedan aug. 20002 975 inlägg
#4
if (array_search('12', $selected) !== false) {
   echo "Finns!"; 
}
learnMedlem sedan jan. 20051 130 inlägg
#5

Givet...Man tackar, Matte!

Btw, vad ärdet för skillnad mellan !== och !=

MatteMedlem sedan aug. 20002 975 inlägg
#6

!== kollar på typen också.

Din array_search() resulterade i index 0 (noll), och din if-sats blev därför false.
När ingen träff hittas med array_search() returnerar den false, och för att särskilja 0 (noll) mot false används !== istället.

learnMedlem sedan jan. 20051 130 inlägg
#7

Aha, förstår!

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)