Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

PHP вопрос с логикой

nester Профи (773), на голосовании 3 года назад
Есть код:
if( !@copy($_FILES['picture']['tmp_name'], $path . $_FILES['picture']['name'])) {
echo("Загрузка не удалась.");
}
И он перемещает файлы, как и должно быть. Но я что-то в ступоре, почему условие что-то выполняет? Разве оно не просто проверяет? Из этого выражения должно просто вывести "Загрузка не удалась.".
Голосование за лучший ответ
Касатка Артистка Знаток (448) 3 года назад
Функция copy() возвращает булево.

Файл получилось копировать - возвращает true, но так как у вас !, получаете false, поэтому просто не выполняются внутренние команды.

Официальный мануал по функции, там точно такой же пример рассмотрен: https://www.php.net/manual/ru/function.copy.php

И да, вызов функции даже в if приводит к её выполнению.
Alex Искусственный Интеллект (117099) 3 года назад
Нет не просто проверяет. Внедрять в циклы и условия прикладные функции, это стиль программирования пришедьший к нам из СИ. На нем есть просто поразительные конструкции с ссылками, которые плохохо понимаются студентами но очень хорошо работают. Более того в циклах можно создать и иницализировать кучу локальных переменных.
Вот поэтому с ПХП программирование не начинают изучать, на выходе вместо программистов быдло.
Похожие вопросы