И вы можете использовать функцию по умолчанию в php для получения различных массивов:
у взять все слова из базы данных вмассив по умолчанию, У меня есть более 50 000 слов в базе данных, и, скорее всего, это число до миллиона. Поэтому хочу, чтобы эта операция не заняла много времени. Я пробовал такие способы, которыми ни слово не помещается в обычный массив. То есть слова передаются в ассоциативный массив:
$words = DB::table('words')->pluck('word');
dump($words);
Результат:
Collection {#197 ▼
#items: array:12 [▼
0 => "тоҷик"
1 => "ӯзбек"
2 => "қирғиз"
3 => "эрон"
4 => "япон"
5 => "англис"
6 => "тоҷик"
7 => "ӯзбек"
8 => "қирғиз"
9 => "эрон"
10 => "япон"
11 => "англис"
]
}
Второй метод:
$words = DB::select("SELECT `word` FROM `words`");
dump($words);
Результат:
array:12 [▼
0 => {#210 ▼
+"word": "тоҷик"
}
1 => {#207 ▼
+"word": "ӯзбек"
}
2 => {#209 ▼
+"word": "қирғиз"
}
3 => {#206 ▼
+"word": "эрон"
}
4 => {#208 ▼
+"word": "япон"
}
5 => {#205 ▼
+"word": "англис"
}
6 => {#204 ▼
+"word": "тоҷик"
}
7 => {#203 ▼
+"word": "ӯзбек"
}
8 => {#202 ▼
+"word": "қирғиз"
}
9 => {#200 ▼
+"word": "эрон"
}
10 => {#213 ▼
+"word": "япон"
}
11 => {#214 ▼
+"word": "англис"
}
]
И я хочу взять все слова в этой форме на обычном массиве:
array:12 [▼
0 => "тоҷик"
1 => "ӯзбек"
2 => "қирғиз"
3 => "эрон"
4 => "япон"
5 => "англис"
6 => "тоҷик"
7 => "ӯзбек"
8 => "қирғиз"
9 => "эрон"
10 => "япон"
11 => "англис"
]
Мне нужно это, чтобы получить разницу между двумя массивами. Входной массив - это оптимистичный массив, поэтому мне нужно взять все слова из баса, чтобы добавить их в обильный массив. В общем, есть ли такая функция, какarray_diff()
в рамках самого Laravel?
$diff = array_diff($input_array, $words_from_db);
И добавьте разницу в базу данных:
foreach ($diff as $value) {
DB::table('words')->insert(['word'=>$value]);
}
Насколько корректен мой метод добавления большого количества слов (данных) в базу данных? Можно ли оптимизировать, если это возможно?
В общем я нашел эту функцию от Laravel:
public function diff($items)
{
return new static(array_diff($this->items, $this->getArrayableItems($items)));
}
Но как я могу использовать его для получения массивов diff 2? Входной массив будет массивом по умолчанию и вторым массивом слов из базы данных
Спасибо всем заранее за ответы и простите за извинения за грамматические ошибки в вопросе.