Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用逗号分隔的字符串在if-else中创建或语句?_Php - Fatal编程技术网

Php 使用逗号分隔的字符串在if-else中创建或语句?

Php 使用逗号分隔的字符串在if-else中创建或语句?,php,Php,目前,我有一段代码可以很好地工作 如果($ext=='jpg'或$ext=='gif'或$ext=='png'或$ext=='jpeg'或$ext=='eps'或$ext=='pdf'){ //找到扩展并执行其余部分。 }否则{ //找不到扩展显示警告或其他内容。 } 但这就是我所说的硬编码,我希望最终用户能够在该代码所属组件的设置中更改它。 在这些设置中,我可以很容易地创建一个输入,用户需要在一个逗号分隔的列表中填写他们想要的所有扩展名 在这种情况下:jpg、gif、png、jpeg、eps

目前,我有一段代码可以很好地工作

如果($ext=='jpg'或$ext=='gif'或$ext=='png'或$ext=='jpeg'或$ext=='eps'或$ext=='pdf'){
//找到扩展并执行其余部分。
}否则{
//找不到扩展显示警告或其他内容。
}
但这就是我所说的硬编码,我希望最终用户能够在该代码所属组件的设置中更改它。 在这些设置中,我可以很容易地创建一个输入,用户需要在一个逗号分隔的列表中填写他们想要的所有扩展名

在这种情况下:
jpg、gif、png、jpeg、eps、pdf

然后检索这些设置,如:
$ext=$setting\u extensions
,其中显示字符串
jpg、gif、png、jpeg、eps、pdf

但是如何在if语句中使用它呢?

我想我可以使用explode和foreach:

$tests=explode(“,”,$ext);
foreach($tests作为$test){
}
但如何将其放入带有or的if语句中?

在您的
if
语句的条件中使用PHP的
in_array()
函数:

$tests = explode(',', $extString);

if (in_array($ext, $tests))) {
    // success
}
但我还要加上一些规范化,所以大写、间距等不会成为一个因素:

$tests = explode(',', $extString);
$tests = array_map(function($test) {
    return strtolower(trim($test))
}, $tests); 

if (in_array(strtolower($ext), $tests)) {
    // success
}
if
语句的条件中使用PHP的
in_array()
函数:

$tests = explode(',', $extString);

if (in_array($ext, $tests))) {
    // success
}
但我还要加上一些规范化,所以大写、间距等不会成为一个因素:

$tests = explode(',', $extString);
$tests = array_map(function($test) {
    return strtolower(trim($test))
}, $tests); 

if (in_array(strtolower($ext), $tests)) {
    // success
}

您可以使用in_数组来实现这一点

$tests = explode(",", $setting_extensions);
if (in_array($ext, $tests)) {
   // Extension found execute the rest.
} else {
  // Extension not found show a warning or something.
}

您可以使用in_数组来实现这一点

$tests = explode(",", $setting_extensions);
if (in_array($ext, $tests)) {
   // Extension found execute the rest.
} else {
  // Extension not found show a warning or something.
}

在数组中分解
。这是否回答了您的问题@El_Vanja在收到投稿人的答案并再次阅读您的建议后,我现在可以看到它如何回答我的问题(但必须先测试),但在此之前,我看不出它是如何适用的。但是感谢您提出这个问题,因为我在发布之前没有搜索这些关键字。
爆炸
在数组中
。这是否回答了您的问题@El_Vanja在收到投稿人的答案并再次阅读您的建议后,我现在可以看到它如何回答我的问题(但必须先测试),但在此之前,我看不出它是如何适用的。但是谢谢你提出这个问题,因为我在发布之前没有搜索这些关键词。谢谢你帮我解决这个问题!我将尝试这个以及其他答案,我将接受a.s.a.p.的答案。谢谢你的帮助!我将尝试这个以及其他答案,我将接受a.s.a.p.的答案。谢谢你的帮助!我将尝试这个以及其他答案,我将接受a.s.a.p.的答案。谢谢你的帮助!我将尝试这个以及其他答案,我将接受a.s.a.p.的答案。