+ 2
need php code explanation
please tell me how can the following code output 10?? function func($arg) { $result = 0; for($i=0; $i<$arg; $i++) { $result = $result + $i; } return $result; } echo func(5); please break down this code and explain me in details and may someone else too benefit from this.
6 ответов
+ 2
Here in this code you are defining a function called "func" which takes "$arg" as a parameter.
Then you're declaring variable "$result" and initializing with 0.
Next the number of times for loop runs is "$arg-1" starting from "0", as the loop stops when the value of "$i" is less than "$arg".
In the body of the loop, you are finding the sum of elements (numbers) from "0" to "$arg-1" and saving the result in subsequent turns of loops in "$result" variable.
Once your "$i" variable is one less than "$arg" the loop stops and the value of "$result" is printed.
Imagine "$arg" value as 3.
"$result" value is 0.
"$i" value is 0.
In for loop...
Conditional check - "$i" value is less than "$arg"
Ist Iteration
$result = 0 + 0;
increment "$i" value ; "$i"=1, by i++;
Conditional check - "$i" value is less than "$arg"
2nd iteration
$result = 0 + 1;
$result equals 1
increment "$i" value ; "$i"=2, by i++;
Conditional check - "$i" value is less than "$arg"
$result = 1 + 2;
$result equals 3
increment "$i" value ; "$i"=3, by i++;
Conditional check - "$i" value is not less than "$arg"
Hence loop breaks..
Echo $result
+ 2
You are correct the for loop stops when $i value is 4. You must see that the loop also performs a step to increase the value of $result as explained. This function returns the value of $result and not $i.
$i value is incremented upto 5 but the $result value is increased upto 10 as the $i numbers are adding up. Echo statement prints the value of variable..
+ 1
I found the solution for this ! the confusion was causing because i lacked of knowledge how the $result variable was saving the value..
The cycle have only 4 repeat ( if $i < 5 ) ( 4 )
0 = 0 + 0;
Save and repeat;
0 = 0 + 1;
save and repeat;
1 = 1 + 2;
save and repeat;
3 = 3 + 3;
save and repeat;
6 = 6 + 4;
= 10 ! ... cycle must end .
This is the right explanation. credit goes to @Lukys Martinec
+ 1
In each turn you are increasing value of result by 4.
4*5= 20. 4+4+4+4+4=20.
result = 0+4; i=0;
result= 4+ 4; I=1;
result = 8+ 4;I=2
result= 12+4;I=3;
result = 16+ 4;I=4;
result=20;
0
I still don't get it needs more explanation.
the for loop should run till it reaches $arg value right? and the $arg value is 5 so the for loop should break after it reaches 4 why it goes till 10 ??????????
0
Well can anyone explain this too ?
$arg = 5;
$result = 0;
for($i=0; $i<$arg; $i++) {
$result = $result + 4 ;
}
echo $result;
how is this outputting 20 ?