php检查名称包含字符串和更多检查名称

php检查名称包含字符串和更多检查名称,php,Php,我制作了一个简单的函数来检查数组字符串是否包含某个名称。然而,由于名字越来越多,我不得不一直重复elseif。如果有人能帮助我提高我的功能,请?我想查一下$arr的名字 如果数组看起来像$arr=array('PDF','PSD','PNG','GIF','Mp3','JPG'…) $i可以从mysql function checkname($arr, $name1, $name2, $name3......... ){ if (strpos($arr, $name1) !==

我制作了一个简单的函数来检查数组字符串是否包含某个名称。然而,由于名字越来越多,我不得不一直重复
elseif
。如果有人能帮助我提高我的功能,请?我想查一下$arr的名字

如果数组看起来像
$arr=array('PDF','PSD','PNG','GIF','Mp3','JPG'…)

$i
可以从
mysql

 function checkname($arr, $name1, $name2, $name3......... ){
        if (strpos($arr, $name1) !== false) {
            return $name1;
        }elseif(strpos($arr, $name2) !== false){
            return $name2;

        ..............


        }else{
            return ' ';
        }
    }


checkname($arr[$i], 'PDF', 'PSD', 'PNG'........);
我可以建议和解决你的争论问题吗

<?php
    function checkname($arr, $name) {
        foreach (array_slice(func_get_args(), 1) as $name) {
            if (strpos($arr, $name) !== false) {
                return $name;
            }
        }

        return '';
    }
?>

..或者,要将其解为无穷大(或者无论内存可以处理多少个数组值),为什么不传递一个数组,只需执行以下操作:

<?php
    function checkname($arr, $names) {
        foreach ($names as $name) {
            if (strpos($arr, $name) !== false) {
                return $name;
            }
        }

        return '';
    }

    checkname($arr[$i], array('PDF', 'PSD', 'PNG'));
?>

注意


您当前的代码检查您姓名中任何位置的
PDF
PSD
PNG
等(大写!!)的位置,因此
MYPNG.PHP
将顺利通过,而
doge.PNG
将失败。

您是否设置使用具有动态参数数的函数?我将向参数传递两个字符串数组

function checkname($arr, $names){
    foreach ($names as $value)
        if (in_array(strtoupper($value), $arr))
            return $value;
}

正如其他评论中提到的,您需要清理输入。看起来您的数据库正在以大写形式存储您的文件类型。如果这是真的,您可以随意使用strtoupper。

为什么不传递一组名称呢?非常感谢!将勾选此项:-)@olo确保您检查了最新编辑-如果没有返回任何其他内容,它将始终返回
$name