PHP Faker. 如何创建N个独特的单词?

3

我需要创建N个独特的单词。看来'words'不能与'unique'一起使用。

\Faker\Factory::create()->unique()->words(14);

...unique()->word()可以正常使用。我正在尝试创建250个类似的独特单词:

for ($i = 1; $i <= 250; $i++) {
    $iadefaults[] = $faker->unique()->word();
}

但我收到了。
Maximum retries of 10000 reached without finding a unique value

我该如何使用Faker创建那250个独特的单词?

1
我通过实证的方式发现,最大的唯一单词数量是182。 - undefined
1个回答

7

看起来我找到了你的问题的解决方案

进入Faker的源代码,你会找到一个Provider/Lorem.php文件

在文件顶部有一个protected static $wordList属性,其中包含一个数组,定义了生成器返回哪些单词。如果你执行count(array_count_values($wordList)); - 你会看到一个神奇的数字182个独特的单词 :) 难怪它不能基于该列表获取更多的唯一值。

所以你只需要在那个数组中放置更多的独特单词,这样就可以解决问题了!


2
但是作者限制字数肯定有原因。这是关于性能的问题吗?此外,如果我执行composer update,那么所有的更改都会丢失。 - undefined
也许他们只是没有足够关注这个使用案例。我怀疑在那里添加几百个字不会对性能造成太大的影响。也许你应该给他们的代码库发送更多反馈?(我看到你已经在那里留下了一些评论) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接