﻿ PHP Exercises: Compute the sum of the numbers in a given array except those numbers starting with 5 followed by atleast one 6 - w3resource

# PHP Exercises: Compute the sum of the numbers in a given array except those numbers starting with 5 followed by atleast one 6

## PHP Basic Algorithm: Exercise-109 with Solution

Write a PHP program to compute the sum of the numbers in a given array except those numbers starting with 5 followed by atleast one 6. Return 0 if the given array has no integer.

Sample Solution:

PHP Code :

``````<?php
function test(\$nums)
{
\$sum = 0;
\$inSection = 0;
\$flag = 0;
for (\$i = 0; \$i < sizeof(\$nums); \$i++)
{
\$inSection = 0;
if (\$nums[\$i] == 5)
{
\$inSection = 0;
\$flag = 1;
}
if (\$inSection == 0 && \$nums[\$i] == 6)
{
if (\$flag == 1)
{
\$sum = \$sum - 5;
\$inSection = 1;
}
\$flag = 0;
}
if (\$inSection == 0)
{
\$sum += \$nums[\$i];
}
}
return \$sum;
}
echo "Sum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:\n". test([1, 5, 7, 9, 10, 17] );
echo "\nSum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:\n". test([1, 5, 6, 9, 10, 17] );
echo "\nSum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:\n". test([5, 6, 7, 9, 10, 17, 1] );
echo "\nSum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:\n". test([11, 9, 10, 17, 5, 6] );
``````

Sample Output:

```Sum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:
49
Sum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:
37
Sum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:
44
Sum of the numbers of the said array except those numbers starting with 5 followed by atleast one 6:
47
```

Flowchart:

PHP Code Editor:

What is the difficulty level of this exercise?

﻿

## PHP: Tips of the Day

\$GLOBALS: An associative array containing references to all variables which are currently defined in the global scope of the script. The variable names are the keys of the array

Example:

```<?php
\$myGlobal = "global"; // declare variable outside of scope
function test()
{
\$myLocal = "local"; // declare variable inside of scope
// both variables are printed
var_dump(\$myLocal);
var_dump(\$GLOBALS["myGlobal"]);
}
test(); // run function
// only \$myGlobal is printed since \$myLocal is not globally scoped

var_dump(\$myLocal);
var_dump(\$myGlobal);
?>
```

Output:

```string(5) "local"
string(6) "global"
NULL
string(6) "global"
```

In the above example \$myLocal is not displayed the second time because it is declared inside the test() function and then destroyed after the function is closed.

Becoming global

To remedy this there are two options.

Option one: global keyword

```function test()
{
global \$myLocal;
\$myLocal = "local";
var_dump(\$myLocal);
var_dump(\$GLOBALS["myGlobal"]);
}
```

The global keyword is a prefix on a variable that forces it to be part of the global scope.

Note that you cannot assign a value to a variable in the same statement as the global keyword. Hence, why I had to assign a value underneath. (It is possible if you remove new lines and spaces but I don't think it is neat. global \$myLocal; \$myLocal = "local").

Option two: \$GLOBALS array

```function test()
{
\$GLOBALS["myLocal"] = "local";
\$myLocal = \$GLOBALS["myLocal"];
var_dump(\$myLocal);
var_dump(\$GLOBALS["myGlobal"]);
}
```

In this example I reassigned \$myLocal the value of \$GLOBAL["myLocal"] since I find it easier writing a variable name rather than the associative array.