获取随机名字

14 篇文章 4 订阅
12 篇文章 0 订阅

/**
 * 获取文件行数
 * @param string $filename 文件名
 * @return int
 */
function file_line(string $filename): int
{
    if (!file_exists($filename)) die('文件不存在');

    $n = 0;
    $fp = fopen($filename, 'r');

    while (!feof($fp)) {
        if (fgets($fp)) ++ $n;
    }

    fclose($fp);
    return $n;
}

/**
 * 获取文件指定行内容(多行)
 * @param string $filename 文件名(路径)
 * @param array  $lines    文件行数(多行)
 * @param bool   $mod      是否去除空格,默认去除
 * @return array
 */
function file_content(string $filename, array $lines, bool $mod = true): array
{
    if (!file_exists($filename)) die('文件不存在');

    $data = [];
    $n = 0;
    $fp = fopen($filename, 'r');

    while (!feof($fp)) {
        if (!$tmp = fgets($fp)) continue;
        ++$n;
        if (!in_array($n, $lines)) continue;
        $data[] = $mod ? trim($tmp) : $tmp;
    }

    fclose($fp);
    return $data;
}

/**
 * 获取随机名字
 * @param int $num 名字个数
 * @param string $path_l 姓路径 注:/test/txt/lastname.txt
 * @param string $path_n 名路径 注:/test/txt/name.txt
 * @return array array
 */
function get_name(int $num = 1, string $path_l = './txt/lastname.txt', string $path_n = './txt/name.txt'): array
{
    if ($num < 1) die('参数错误');

    $data = [];

    $line_l = file_line($path_l); // 姓行数
    $line_n = file_line($path_n); // 名行数

    // 随机行
    $rand_l = [];
    $rand_n = [];
    for ($i = 0; $i < $num; ++$i) {
        $rand_l[] = mt_rand(1, $line_l);
        $rand_n[] = mt_rand(1, $line_n);
    }

    $data_l = file_content($path_l, $rand_l); // 获取姓
    $data_n = file_content($path_n, $rand_n); // 获取名

    // 组装姓名
    for ($i = 0; $i < $num; ++$i) {
        $data[] = $data_l[$i] . $data_n[$i];
    }

    return $data;
}

v(get_name(10));

依赖文件(说是违法违规):

执行结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值