array_key_exists söker på index, och dina index är 0, 1, 2 och 3.
Du ska använda array_search istället.
6 svar · 385 visningar · startad av learn
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....??
array_key_exists söker på index, och dina index är 0, 1, 2 och 3.
Du ska använda array_search istället.
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;
if (array_search('12', $selected) !== false) {
echo "Finns!";
}
!== 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.
Aha, förstår!