John Davidson

php - Switch Case Condition for Empty String

0 comments
Message:



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 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us