Laravel & Faker 没有给出数组的随机元素

Laravel & Faker gives not a random element of array

我对 Laravel 和 Faker 有意见。我想用 faker 的 randomElement 函数从数组中选择一个随机元素。我有这个简单的代码:

$siloID = DB::table('silos')->pluck('id');
echo(print("silos: ".$siloID));
echo(print("\nrandom element: ".$faker->randomElement($siloID)));

这是在控制台上返回给我的:

筒仓:[3,9,14,18,21,93,42,55,88,99,31,38,65,1,23,68,98,13,39,40,45, 49,59,6,11,24,25,60,64,90,94,97,100,4,15,7,26,29,85,35,43,75,22,48,58,80,86, 87,62,82,89,30,95,12,28,33,73,17,27,57,72,74,83,91,69,78,37,76,81,20,53,79, 32,46,56,77,92,34,41,44,67,16,19,52,61,96,5,10 ,47,51,54,84,2,36,66,71,50,70,8,63]1

随机元素:851

我不明白这是因为851不在数组中?我做错了什么?

组合 echoprint 会产生问题(由于括号,它在末尾添加了 1)。 $faker 方法 randomElement 工作正常

要修复只需删除额外的php方法。

echo("silos: ".$siloID);
echo("\nrandom element: ".$faker->randomElement($siloID));

我怀疑这只是为了测试输出,您的最终代码不需要 echo / print 语句组合,$faker 方法应该适合您。

您可以执行类似于以下示例的操作。它会 return 你的随机数组元素。在这里,我将 JSON 格式的随机数组值存储到数据库

$factory->define(Rule::class, function (Faker $faker) {

    $rule = [
        'age' => [
            'borrower_age_min'  => 'min:21',
            'borrower_age_max'  => 'max:75'
        ],
        'affordability' => [
            'annual_income' => 'integer|min:40000',
            'loan_amount'   => 'integer|max:3*',
        ],
        'finance' => [
            'loan_length'   => 'integer|max:12',
            'loan_amount'   => 'integer|max:500000',
        ]
    ];

    return [
        'rule'     => json_encode([
            $faker->randomElement(
                [
                    $rule['age']['borrower_age_min'],
                    $rule['age']['borrower_age_max'],
                    $rule['affordability']['annual_income'],
                    $rule['affordability']['loan_amount'],
                    $rule['finance']['loan_length'],
                    $rule['finance']['loan_amount']
                ]
            )
        ])
    ];
});