Всегда используйте то, что является самым ясным. Что-либо еще, что Вы делаете, пытается перехитрить компилятор. Если компилятор будет вообще интеллектуален, он приложит все усилия для оптимизации результата, но ничто не может заставить следующего парня не ненавидеть Вас за Ваше дрянное bitshifting решение (я люблю побитовую обработку между прочим, это интересно. Но забава! = читаемый)
Преждевременная оптимизация является корнем всего зла. Всегда помните три правила оптимизации!
, Если Вы - эксперт и можете выровнять по ширине потребность, затем используйте следующую процедуру:
кроме того, делая вещи как удаление внутренних циклов, когда они не требуются, или предпочитание связанного списка по массиву для вида вставки не оптимизация, просто программируя.
X returns (value +3), while Y returns (value*2)
Given a value of 4, this means (4+3) * (4*2) = 7 * 8 = 56
.
Although functions are not limited in scope (which means that you can safely 'nest' function definitions), this particular example is prone to errors:
1) You can't call y()
before calling x()
, because function y()
won't actually be defined until x()
has executed once.
2) Calling x()
twice will cause PHP to redeclare function y()
, leading to a fatal error:
Fatal error: Cannot redeclare y()
The solution to both would be to split the code, so that both functions are declared independent of each other:
function x ($y)
{
return($y+3);
}
function y ($z)
{
return ($z*2);
}
This is also a lot more readable.
(4+3)*(4*2) == 56
Обратите внимание, что PHP на самом деле не поддерживает «вложенные функции», как это определено только в области родительской функции. Все функции определены глобально. См. документы .
Не уверен, чего хотел добиться автор этого кода. Определение функции внутри другой функции НЕ означает, что внутренняя функция видна только внутри внешней функции. После первого вызова x () функция y () также будет в глобальной области видимости.
Your query is doing 7 * 8
x(4) = 4+3 = 7
and y(4) = 4*2 = 8
what happens is when function x is called it creates function y, it does not run it.