mck*_*cky 5 php comparison if-statement
我有一个文件名($fname),然后我需要$pClass用" - " 分配给文件类型.目前我总是得到text-,无论它是什么文件类型.
//This gets the extention for the file and assigns the class to the icon <i>
$pieces = explode('.', $fname);
$ext = array_pop($pieces);
if($ext == (('txt')||('rtf')||('log')||('docx'))){
$pClass = 'text-';
}
else if($ext == (('zip')||('sitx')||('7z')||('rar')||('gz'))){
$pClass = 'archive-';
}
else if($ext == (('php')||('css')||('html')||('c')||('cs')||('java')||('js')||('xml')||('htm')||('asp'))){
$pClass = 'code-';
}
else if($ext == (('png')||('bmp')||('dds')||('gif')||('jpg')||('psd')||('pspimage')||('tga')||('svg'))){
$pClass = 'image-';
}
else {
$pClass = '';
}
Run Code Online (Sandbox Code Playgroud)
为什么带有OR运算符的if语句不起作用?
Nie*_*sol 12
该逻辑 ||(OR)运算符,你期望它的工作不工作.该||运营商始终计算结果为布尔TRUE或FALSE.因此,在您的示例中,您的字符串将转换为布尔值,然后进行比较.
如果声明:
if($ext == ('txt' || 'rtf'|| 'log' || 'docx'))
Run Code Online (Sandbox Code Playgroud)
归结为:
if($ext == (TRUE || TRUE || TRUE || TRUE))
if($ext == TRUE)
Run Code Online (Sandbox Code Playgroud)
要解决此问题并使代码按您的意愿工作,您可以使用不同的方法.
解决问题并针对多个值检查值的一种方法是,实际将值与多个值进行比较:
if($ext == "txt" || $ext == "rtf" /* || ... */)
Run Code Online (Sandbox Code Playgroud)
in_array()另一种方法是使用该函数in_array()并检查该值是否等于其中一个数组值:
if(in_array($ext, ["txt", "rtf" /* , ... */], TRUE))
Run Code Online (Sandbox Code Playgroud)
注意:第二个参数用于严格比较
switch()您还可以使用switch针对多个值检查您的值,然后让案例落空.
switch($ext){
case "txt":
case "rtf":
/* case ...: */
$pClass = "text-";
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6338 次 |
| 最近记录: |