Tips
28 вересня 2026
diff() і diffKeys() - пошук відмінностей
Порівнюєте колекції? Потрібно знайти, що додалось або зникло?
diff() порівнює значення, diffKeys() - ключі.
Методи:
- diff() - порівняння за значеннями
- diffKeys() - за ключами
- diffAssoc() - за ключем і значенням
Порада: ідеально, щоб визначити, які дані змінилися між двома наборами.
$original = collect([1, 2, 3, 4, 5]);
$updated = collect([1, 2, 3, 6, 7]);
$removed = $original->diff($updated); // [4, 5]
$added = $updated->diff($original); // [6, 7]
// diffKeys
$old = collect(['a' => 1, 'b' => 2, 'c' => 3]);
$new = collect(['a' => 1, 'b' => 5, 'd' => 4]);
$keyDiff = $old->diffKeys($new);
// ['c' => 3]
// diffAssoc
$assocDiff = $old->diffAssoc($new);
// ['b' => 2, 'c' => 3]
// Виявлення змін у формі
$originalData = collect($user->toArray());
$updatedData = collect($request->validated());
$changes = $updatedData->diffAssoc($originalData);
if ($changes->isNotEmpty()) {
$user->update($changes->toArray());
Log::info('User updated', ['changes' => $changes]);
}