2013-11-12 5 views
1

У меня есть код, подобный следующему в PHP:PHP функции внутри, если оператор не работает

if(move_uploaded_file($tempfile, $newfilelocation) && functionReturningFalse()) {} else {...} 

Скажет, первая функция возвращает истину (успешно перемещает загруженный файл) и есть некоторая вторая функция, которая возвращает ложь , Почему файл не перемещается? Если я удалю второй вызов функции, файл переместится в новое место.

*** Редактировать: Я не спрашиваю, почему код внутри брекетов {} не будет работать. По моему мнению, функция php move_uploaded_file должна перемещать временный файл, когда он вызывается, даже если вызываемая функция рядом с ним (functionReturningFalse()) возвращает false. Это не тот случай. Если вторая функция возвращает false, мой файл не перемещается.

+1

nit pick: файл не загружается. К моменту запуска вашего кода фактическая загрузка завершена. Файл не переводится. –

+0

Возникает вопрос: «Почему тело этого оператора if не работает?» или это «Почему функцияReturningFalse() не работает?» Или что-то еще? –

+0

@MarcB Файл не перемещается? Или файл теперь перемещается? –

ответ

0
if (true && false) { 
    echo 'both true'; 
} else { 
    echo 'one or both false'; 
} 

См.! (НЕ)

if (true && ! false) { 
    echo 'both true'; 
} else { 
    echo 'one or both false'; 
} 

или быть явным ... if(move_uploaded_file($tempfile, $newfilelocation) == true && functionReturningFalse() == false) {

0
if((move_uploaded_file($tempfile, $newfilelocation)) && ! (functionReturningFalse())) {} else {...} 
0

Если я удалю вторую функцию вызова файла переместится на новое место штрафа.

Вы находитесь на неправильном пути. Я не знаю, что меняет поведение (или если оно вообще меняется), но вообще, Возвращаемое значение любого вызова функции в правой части && не изменит поведение функции позвоните в левую сторону от &&.

Это является возможно для тела одной функции, чтобы отменить или иным образом препятствовать результатам вызова предыдущей функции, но это не похоже, что это то, что здесь происходит. И даже если бы это было так, это не имело бы никакого отношения к возвращаемому значению второй функции.

Смежные вопросы