Ответ
Функции unset() и unlink() выполняют принципиально разные операции в PHP.
unset() — языковая конструкция для уничтожения переменных. Она удаляет переменную из текущей области видимости, освобождая занимаемую ею память.
$user = ['name' => 'Alice'];
$temp = $user;
unset($user); // Уничтожает переменную $user
// echo $user; // Вызовет Notice: Undefined variable
// $temp при этом все еще существует и содержит массив.
unlink() — функция для работы с файловой системой. Она удаляет файл с диска.
$filePath = 'logs/temp.txt';
if (file_exists($filePath)) {
if (unlink($filePath)) {
echo "Файл успешно удален.";
} else {
echo "Не удалось удалить файл.";
}
}
| Сводка отличий: | Аспект | unset() |
unlink() |
|---|---|---|---|
| Объект | Переменная, элемент массива, свойство объекта. | Файл в файловой системе. | |
| Контекст | Работа с памятью и областью видимости. | Работа с файловой системой (ввод-вывод). | |
| Возвращаемое значение | null (не возвращает значимого значения). |
true в случае успеха, false в случае ошибки. |
|
| Последствия | Переменная становится неопределенной. | Файл физически удаляется с диска. |
Ответ 18+ 🔞
Слушай, а вот реально, народ постоянно путает unset() и unlink(). Это же, ёпта, как сравнивать молоток и швабру — общее только то, что оба в руках держат, а делают они вообще разное, ядрёна вошь.
Вот смотри. unset() — это когда ты берешь и просто выкидываешь из головы номер телефона бывшей. Переменная была, и вот её нет. Память освободилась, живи спокойно. Это чисто внутренние дела твоего скрипта.
$exGirlfriend = ['name' => 'Катя', 'mood' => 'нестабильный'];
$memory = $exGirlfriend; // на всякий случай сохранил в памяти
unset($exGirlfriend); // Всё, стёр, забыл, живу дальше.
// echo $exGirlfriend; // Тут будет охуенная ошибка, потому что переменной-то уже нет!
// Но $memory-то остался, чувак. Массив никуда не делся.
А вот unlink() — это уже серьёзно. Это не про память, это про реальный мир. Это как взять и физически сжечь старые любовные письма, которые валялись в ящике стола. Файл был на диске — и вот его нет. Навсегда. Без корзины.
$pathToLetters = 'home/old_love_letters.txt';
if (file_exists($pathToLetters)) {
if (unlink($pathToLetters)) {
echo "Файл нахуй отправлен. Свобода.";
} else {
echo "Чёрт, не удалось. Может, права нет? Или файл кто-то другой читает?";
}
}
Короче, резюме, чтобы вообще ни у кого вопросов не осталось:
| Что сравниваем | unset() |
unlink() |
|---|---|---|
| Что удаляем | Переменную из оперативки. Свойство, элемент массива. | Файл с твоего жестокого жёсткого диска. |
| Где это происходит | Внутри мозга PHP-процесса. | В реальной файловой системе, на сервере. |
| Что возвращает | Похуй, что возвращает. Ничего путного. | true, если получилось, false — если всё пошло по пизде (нет прав, файл занят). |
| Что будет, если накосячить | Скрипт упадёт с ошибкой типа «Чувак, я не знаю эту переменную». | Файл так и останется лежать, а ты будешь в ауте, почему не удаляется. |
Так что запомни раз и навсегда: unset() — для мозгов скрипта, unlink() — для файлов на диске. Перепутаешь — будет тебе хиросима, а не работающий код.