learnMedlem sedan jan. 20051 130 inlägg 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 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 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 if (array_search('12', $selected) !== false) {
echo "Finns!";
}
learnMedlem sedan jan. 20051 130 inlägg Givet...Man tackar, Matte!
Btw, vad ärdet för skillnad mellan !== och !=
MatteMedlem sedan aug. 20002 975 inlägg !== 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.