I can't explain this
public static function getIconBaseOnOS($os)
{
switch ($os) {
case (strpos($os, 'Win64') !== false):
$icon = 'windows';
break;
case (strpos($os, 'WOW64') !== false):
$icon = 'windows';
break;
case (strpos($os, 'iPhone') !== false):
$icon = 'iphone';
break;
case (strpos($os, 'Mac') !== false):
$icon = 'mac';
break;
case (strpos($os, 'Linux') !== false):
$icon = 'linux';
break;
case (strpos($os, 'Android') !== false):
$icon = 'android';
break;
case (strpos($os, 'Crawler') !== false):
$icon = 'crawler';
break;
case (strpos($os, 'compatible') !== false):
$icon = 'compatible';
break;
case (strpos($os, 'bot') !== false):
$icon = 'bot';
break;
case '':
$icon = 'na';
break;
case strlen($os) == 0:
$icon = 'na';
break;
default:
$icon = 'na';
}
return $icon;
}
First 2 rows
My OS clearly == empty && length == 0.
I'm not sure why this case is not trigger $icon = 'na';
, but instead it kept showing windows
icon !! ????????♂️ How ?
My Answer:
The issue here is that the case for an empty string `''` is not being triggered because the switch statement in PHP does not support conditions like `strlen($os) == 0`. Instead, you can use a simple if statement before the switch to check for an empty string and set the `$icon` variable accordingly. Here's an updated version of your code:
php
public static function getIconBaseOnOS($os)
{
if ($os === '' || strlen($os) == 0) {
return 'na';
}
switch ($os) {
case (strpos($os, 'Win64') !== false):
$icon = 'windows';
break;
case (strpos($os, 'WOW64') !== false):
$icon = 'windows';
break;
case (strpos($os, 'iPhone') !== false):
$icon = 'iphone';
break;
case (strpos($os, 'Mac') !== false):
$icon = 'mac';
break;
case (strpos($os, 'Linux') !== false):
$icon = 'linux';
break;
case (strpos($os, 'Android') !== false):
$icon = 'android';
break;
case (strpos($os, 'Crawler') !== false):
$icon = 'crawler';
break;
case (strpos($os, 'compatible') !== false):
$icon = 'compatible';
break;
case (strpos($os, 'bot') !== false):
$icon = 'bot';
break;
default:
$icon = 'na';
}
return $icon;
}
By checking for an empty string before the switch statement, you can ensure that the 'na' icon is returned when the input is empty.
Rate this post
4 of 5 based on 7140 votesComments