doudongfu8006 2014-03-04 01:14
浏览 84
已采纳

php check name包含字符串和checkout更多名称

I made a simple function to check if array strings contain a certain name. However, since the names are getting more and more, I have to duplicate elseif all the time. If someone could help me to improve me function please? I'd like to check $arr names.

if the array looks like $arr = array('PDF', 'PSD', 'PNG', 'GIF', 'Mp3', 'JPG'....);

$i can be counted from 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'........);
  • 写回答

2条回答 默认 最新

  • douju4594 2014-03-04 01:18
    关注

    May I suggest array_slice() and func_get_args() to solve your argument problem?

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

    ..alternately, to solve it into infinity (or however many array values your memory can handle) why not pass an array, and simply do the following:

    <?php
        function checkname($arr, $names) {
            foreach ($names as $name) {
                if (strpos($arr, $name) !== false) {
                    return $name;
                }
            }
    
            return '';
        }
    
        checkname($arr[$i], array('PDF', 'PSD', 'PNG'));
    ?>
    

    Note:

    Your current code checks for the position of PDF, PSD, PNG etc., anywhere in your name (in uppercase!!), so MYPNG.PHP would go through fine, and doge.png would fail.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)