Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从文件夹中随机选择一个文件,根据名称分配概率_Php_Regex_Random_Glob_Random Sample - Fatal编程技术网

Php 从文件夹中随机选择一个文件,根据名称分配概率

Php 从文件夹中随机选择一个文件,根据名称分配概率,php,regex,random,glob,random-sample,Php,Regex,Random,Glob,Random Sample,这些文件是字体,它们的名称通常为FontName-type.extension 我将它们放在一个文件夹中,目前我有以下功能: function random_font($dir = 'fonts') { $fonts = glob($dir . '/*'); return $fonts[devurandom_rand(0, count($fonts) - 1)]; } 然而,我们的目标是获得尽可能具有代表性的样本,共享字体名的字体比不共享字体名的字体更相似 我的问题是随机选择字体,

这些文件是字体,它们的名称通常为FontName-type.extension

我将它们放在一个文件夹中,目前我有以下功能:

function random_font($dir = 'fonts')
{
   $fonts = glob($dir . '/*');
   return $fonts[devurandom_rand(0, count($fonts) - 1)];
}
然而,我们的目标是获得尽可能具有代表性的样本,共享字体名的字体比不共享字体名的字体更相似


我的问题是随机选择字体,这样共享FontName的字体也有被选择的可能性。

首先,创建一个数组,将字体名称映射到它们的文件路径。例如,您的原始
$fonts
可能是:

// You already have this array from the glob function.
$fonts = [
    'Helvetica',
    'Helvetica-Bold',
    'Times New Roman',
]
然后,在
$fonts
数组中循环以创建
$FONTNAME
数组。
$fontNames
数组将字体名称映射到文件名。在本例中,
$fontNames
数组将是:

$fontNames = [
    'Helvetica' => ['Helvetica', 'Helvetica-Bold'],
    'Times New Roman' => ['Times New Roman'],
];
然后,您可以从
$fontNames
中选择一个随机键,然后依次选择一个随机值