1 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超13個贊
悲傷的消息:你不能用于array_pad此目的。
您需要應(yīng)用以下修復(fù)程序來消除該錯誤:
// array_pad($ideas, rand(10, 50), new $idea);
array_pad($ideas, rand(10, 50), $idea); // remove new
既然你已經(jīng)在這里做了新的:
$idea = new class($ideas, $faker) {
盡管這會填滿$ideas。$idea它會一遍又一遍地存儲對您的相同引用。這意味著如果您更改一個元素,則所有元素都會發(fā)生此更改(我想這是不希望的)。
為了使其正常工作,您必須使用一個循環(huán),它$idea為每個條目創(chuàng)建一個新的:
$faker = Faker\Factory::create('fr_FR');
$ideas = [];
for ($i = rand(10, 50); $i > 0; $i--) {
$ideas[] = new class($ideas, $faker) {
private $id;
private $author;
function __construct($ideas, $faker) {
$this->id = count($ideas) + 1;
$this->author = $faker->name;
}
};
}
工作示例。
附加信息
而不是這樣做
for ($i = 1; $i <= rand(10, 50); $i++)
最好這樣做
for ($i = rand(10, 50); $i > 0; $i--)
原因是每個循環(huán)都會調(diào)用比較,因此您會在每個循環(huán)上生成一個新的隨機(jī)數(shù)。例子
這是有問題的,因為你往往會得到更多這樣的低數(shù)字。例如,要獲得 50 個循環(huán),隨機(jī)數(shù)必須> $i每次都返回 - 這是非常不可能的。
另一件事:array_pad返回填充的數(shù)組,所以你必須寫
$ideas = array_pad(...
- 1 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報