php知识

概率性抽奖(lottery_raffle)
//chance为抽到概率,数值越小,概率越小
$arr = [
    ['name'=>'1000元手机','chance'=>'1'],
    ['name'=>'100元代金券','chance'=>'10'],
    ['name'=>'10元代金券','chance'=>'100'],
    ['name'=>'谢谢参与','chance'=>'700'],
];
/**
 * 抽奖概率算法
 * @param array $prizeArr 奖品数组
 * @param string $index 概率键名
 * @return mixed 抽到的奖品
 */
function lottery_raffle($prizeArr,$index='chance')
{
    $result = '';
    $randArr = [];

    $i = 1;
    foreach($prizeArr as $item){
        $randArr[$i] = $item[$index];
        $i++;
    }
    //概率数组的总概率精度
    $proSum = array_sum($randArr);

    //概率数组循环
    foreach ($randArr as $key => $val) {
        $randNum = mt_rand(1, $proSum);
        if ($randNum <= $val) {
            $result = $key;
            break;
        } else {
            $proSum -= $val;
        }
    }
    return $prizeArr[$result];
}

获取指定的文件后缀名(get_file_extension)
/**
 * 获取指定文件的后缀名
 * @param array $input 输入的数组
 * @param string $columnKey 指定数组列明
 * @param null $indexKey
 * @return array
 */
function get_file_extension($file) {
    //SPLFileInfo类的getExtension方法,需要5.3.6+版本
    if(version_compare(PHP_VERSION,'5.3.6','>=')){
        $fileInfo = new splFileInfo($file);
        return $fileInfo->getExtension();
    }else{
        $fileInfo = pathinfo($file);
        return $fileInfo['extension'];
    }
}

$file = 'C:\Users\Administrator\Desktop\新建文件夹\127.0.0.1\test.txt';
//输出 txt
echo $test->get_file_extension($file);

格式化文件大小(file_format_size)
/**
 * 格式化文件大小
 * @param string $file 指定文件
 * @param array $unitList 对应单位列表
 * @return string
 */
function file_format_size($file,$unitList = array()){
    $size = filesize($file);
    if(empty($size)){
        return '';
    }
    if(empty($unitList))
        $unitList = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");


    $i = intval(log($size, 1024));
    return (round($size/pow(1024, $i), 2) . $unitList[$i]);
}


$file = 'test.txt';


//输出 100KB
echo file_format_size($file);

猜你喜欢

转载自blog.csdn.net/u012322399/article/details/80051276