﻿ PHP Array Exercise: Calculate and display average temperature - w3resource # PHP Array Exercises : Calculate and display average temperature

## PHP Array: Exercise-9 with Solution

Write a PHP script to calculate and display average temperature, five lowest and highest temperatures.

Recorded temperatures : 78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 75, 76, 73, 68, 62, 73, 72, 65, 74, 62, 62, 65, 64, 68, 73, 75, 79, 73

Sample Solution:

PHP Code:

``````<?php
\$month_temp = "78, 60, 62, 68, 71, 68, 73, 85, 66, 64, 76, 63, 81, 76, 73,
68, 72, 73, 75, 65, 74, 63, 67, 65, 64, 68, 73, 75, 79, 73";
\$temp_array = explode(',', \$month_temp);
\$tot_temp = 0;
\$temp_array_length = count(\$temp_array);
foreach(\$temp_array as \$temp)
{
\$tot_temp += \$temp;
}
\$avg_high_temp = \$tot_temp/\$temp_array_length;
echo "Average Temperature is : ".\$avg_high_temp."
";
sort(\$temp_array);
echo " List of five lowest temperatures :";
for (\$i=0; \$i< 5; \$i++)
{
echo \$temp_array[\$i].", ";
}
echo "List of five highest temperatures :";
for (\$i=(\$temp_array_length-5); \$i< (\$temp_array_length); \$i++)
{
echo \$temp_array[\$i].", ";
}
?>
```
```

Sample Output:

```Average Temperature is : 70.6
List of five lowest temperatures : 60,  62,  63,  63,  64,
List of five highest temperatures : 76, 78,  79,  81,  85,
```

Flowchart: PHP Code Editor:

What is the difficulty level of this exercise?

﻿

## PHP: Tips of the Day

Convert a PHP object to an associative array

Just typecast it

`\$array = (array) \$yourObject;`

From Arrays:

If an object is converted to an array, the result is an array whose elements are the object's properties. The keys are the member variable names, with a few notable exceptions: integer properties are unaccessible; private variables have the class name prepended to the variable name; protected variables have a '*' prepended to the variable name.These prepended values have null bytes on either side.

Example: Simple Object

```\$object = new StdClass;
\$object->foo = 1;
\$object->bar = 2;

var_dump( (array) \$object );
```

Output:

```array(2) {
'foo' => int(1)
'bar' => int(2)
}
```

Example: Complex Object

```class Foo
{
private \$foo;
protected \$bar;
public \$baz;

public function __construct()
{
\$this->foo = 1;
\$this->bar = 2;
\$this->baz = new StdClass;
}
}

var_dump( (array) new Foo );
```

Output (with \0s edited in for clarity):

```array(3) {
'\0Foo\0foo' => int(1)
'\0*\0bar' => int(2)
'baz' => class stdClass#2 (0) {}
}
```

Output with var_export instead of var_dump:

```array (
'' . "\0" . 'Foo' . "\0" . 'foo' => 1,
'' . "\0" . '*' . "\0" . 'bar' => 2,
'baz' =>
stdClass::__set_state(array(
)),
)
```

Typecasting this way will not do deep casting of the object graph and you need to apply the null bytes (as explained in the manual quote) to access any non-public attributes. So this works best when casting StdClass objects or objects with only public properties. For quick and dirty (what you asked for) it's fine.

Also see this in-depth blog post:

• Fast PHP Object to Array conversion

Ref : https://bit.ly/3fqiV2E