一个菜鸟驿站!

PHP面试题一(PHP抽奖、PHP邮箱验证)

PHP 2018-05-09 浏览(865) 评论(0)
- N +

文章目录 [+]

今天去本邦**科技有限公司去面试,于是乎,遇到这么一个问题,用PHP去做一个概率的随机抽奖,emmm~~,这个的确没有做过,也没有思路,于是乎,回来想了一下,现在将代码贴到这里来。附一个正则验证邮箱~~这也是今天的面试题。

  1. 一:PHP抽奖概率算法

  2. //算法
    function get_rand($arr){
        //概率数组的总概率精度
        $allNum = array_sum($arr);//计算数组中元素的和
    
        //概率数组循环
        foreach ($arr as $key => $value){
            $randNum = mt_rand(1, $allNum);
            if($randNum <= $value){//如果这个随机数小于等于数组中的一个元素,则返回数组的下标
                $result = $key;
                break;
            }else{
                $allNum -= $value;
            }
        }
    
        return $result;
    }
    //设置奖品数量
    $arr = [
        ['id' => 1,'num' => 3,'v' => 80],
        ['id' => 2,'num' => 10,'v' => 65],
        ['id' => 3,'num' => 20,'v' => 30],
        ['id' => 4,'num' => 13,'v' => 50],
        ['id' => 5,'num' => 70,'v' => 5],
        ['id' => 6,'num' => 1,'v' => 90],
        ['id' => 7,'num' => 0,'v' => 100],
    ];
    
    
    foreach ($arr as $key => $value){
        //将$arr放入数组下标为$arr的id元素,值为v元素的数组中
        $temp[$value['id']] = $value['v'];
    }
    $rid = get_rand($temp) - 1;
    
    //获取中奖项以及获奖概率
    $res['yes'] = '您获奖个数: ' . $arr[$rid]['num'] . ' 个奖品,获奖几率为:' . $arr[$rid]['v'];
    
    unset($arr[$rid]);//将中奖项从数组中剔除,剩下未中奖项
    
    //打乱数组
    shuffle($arr);
    
    for ($i = 0; $i < count($arr);$i++){
        $res['no'][] = $arr[$i]['num'];
    }
    
    print_r($res);
  3. 二:PHP邮箱验证

    1. 1.正则验证

    2. //  邮箱号
      $email = "catlane@foxmail.com";
      $pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";
      preg_match($pattern, $email, $flags);
      var_dump($flags);
    3. 2.使用 FILTER_VALIDATE_EMAIL 过滤器

    4. $email = "catlane@foxmail.com";
      var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));


标签:
作者:猫巷

,

评论列表 (0)条评论

发表评论

召唤伊斯特瓦尔