【问题标题】:Laravel & Faker gives not a random element of arrayLaravel & Faker 不给出数组的随机元素
【发布时间】:2020-03-12 15:44:33
【问题描述】:

我对 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 不在数组中?我做错了什么?

【问题讨论】:

    标签: php laravel faker


    【解决方案1】:

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

    要修复只需删除多余的 php 方法。

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

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

    【讨论】:

    • 谢谢!只是出于兴趣。是什么让“打印”出问题?
    • 这并不是真正的“错误”,它只是以您不希望的方式使用。您可以通过使用变量并在 echo 中添加/删除打印语句来进行测试。它有时会添加一个=>1,这是线索。有一个interesting SO answer on how this processes within PHP here
    【解决方案2】:

    您可以执行类似于以下示例的操作。它将返回您随机数组元素。在这里,我将 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']
                    ]
                )
            ])
        ];
    });
    

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      相关资源
      最近更新 更多