ierusalim / php-random-gen
随机数组、字符串、json文件生成
1.1.1
2019-05-27 05:07 UTC
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: 4.8.*
This package is auto-updated.
Last update: 2024-09-27 18:04:27 UTC
README
随机数据库
该库易于快速启动。它适用于从给定的字符集中生成随机字节或字符串。还可以生成任意嵌套深度的数组以及具有大型数据结构的文件
安装
通过Composer
$ composer require ierusalim/php-random-gen
使用方法
生成随机字符串
这个简单的函数放在RandomStr.php文件中,没有依赖关系
- genRandomStr($len)
- genRandomBytes($bytes_cnt)
- setChars(结果将生成的值的列表)
以下示例很容易理解
<?php $g = new RandomStr(); // Generate random 16 characters from default list $str = $g->genRandomStr(16); echo $str; // Generate 33 random bytes $bytes = $g->genRandomBytes(33); // It works fast. No problem for create random string of million chars $str = $g->genRandomStr(1000000); echo "\nGenerated bytes: " . strlen($str); // Need generate multibyte characters? No problems, set flag $utf8mode = true $g->setChars("神會貓性少女 迪克和陰部", true); $str = $g->genRandomStr(888); // Generate string of 100 chars from character list "abcdefgh" $g->setChars("abcdefgh"); $str = $g->genRandomStr(100); echo $str; // Generate string of 10 random words from specified words array $words_arr = explode(',',' one, two, three, four, five, six, seven'); $g->setChars([$words_arr]); echo $g->genRandomStr(10); // We get a result like " five three three three four seven four four six four"
生成随机数组
随机数组生成类RandomArray是RandomStr的扩展。
简单示例
<?php $g = new RandomArray(); // Generate small random array with default parameters: $arr = $g->genRandomArray(); print_r($arr); // Generate random array with string keys from listed chars, 3-9 chars length $g->setKeysModel(3, 9, 'abcdefghijklmnopqrstuvwxyz'); $g->setValuesModel(0, 100); //random numeric values range from 0 to 100 $arr = $g->genRandomArray(10, 15, 0); //generate 10-15 elements (not nested) print_r($arr);
由于随机数组是在内存中生成的,所以如果使用非简单模型并且元素数量很大(10万或更多),可能会很慢。
但是,当使用简单的数字键(1,2,3...n)和简单的值范围0-65535时,生成包含1百万元素(嵌套深度2-3级)的数组的时间小于1秒。
查看示例
<?php $g = new RandomArray(); $g->setKeysModel(); //set simple keys model (1,2,3,...n) $g->setValuesModel(); //set simple values model (integer range 0-65535) $lim_elements = 1000000; $lim_depth = 3; $_ts = microtime(true); $arr = $g->genRandomArray(10000, 10000, 32768, $lim_depth, $lim_elements); $total_generated = $lim_elements - $g->lim_elements; echo (microtime(true) - $_ts) . " sec, generated: $total_generated elements.\n";
什么是生成模型?
生成随机键和值可以使用4种模型
- 0 简单模型 - 是最快的,键为1,2,3..n,值为0-65535。
- 1 数字范围模型 - 使用mt_rand(min,max)为随机键或值。
- 2 随机字符串模型 - 使用genRandomStr函数生成键或值。
- 3 用户函数 - 使用用户定义的函数生成键或值。
这些模型如下设置
- 0 简单模型
$g->setKeysModel(); //set simple keys model (1,2,3,...n) $g->setValuesModel(); //set simple values model (integer range 0-65535)
- 1 数字范围模型
$g->setKeysModel(min, max); //set keys model range from min to max (integer) $g->setValuesModel(min, max); //set values model range from min to max (integer)
- 2 随机字符串模型 (请参阅genRandomStr函数的说明)
$g->setKeysModel(min_len, max_len, $char_str [, $utf8flag] ) $g->setValuesModel(min_len, max_len, $char_str [, $utf8flag] )
- 4 用户函数模型
$g->setKeysModelFn(callable); $g->setValuesModelFn(callable);
使用可调用生成模型的简单示例
<?php $g = new RandomArray(); // Keys are md5 of serial key numbers $g->setKeysModelFn(function($parr) { \extract($parr); //$k, $v, $lim_depth return \md5($k); }); // Values - arrays with all parameters given for generation function $g->setValuesModelFn(function($parr) { return $parr; }); $arr = $g->genRandomArray(); print_r($arr);