﻿ PHP Array Exercise: Sort an associative array - w3resource # PHP Array Exercises : Sort an associative array

## PHP Array: Exercise-8 with Solution

Write a PHP script to sort the following associative array :

array("Sophia"=>"31","Jacob"=>"41","William"=>"39","Ramesh"=>"40") in
a) ascending order sort by value
b) ascending order sort by Key
c) descending order sorting by Value
d) descending order sorting by Key

Sample Solution:

PHP Code:

``````<?php
echo "
Associative array : Ascending order sort by value
";
\$array2=array("Sophia"=>"31","Jacob"=>"41","William"=>"39","Ramesh"=>"40"); asort(\$array2);
foreach(\$array2 as \$y=>\$y_value)
{
echo "Age of ".\$y." is : ".\$y_value."
";
}
echo "
Associative array : Ascending order sort by Key
";
\$array3=array("Sophia"=>"31","Jacob"=>"41","William"=>"39","Ramesh"=>"40"); ksort(\$array3);
foreach(\$array3 as \$y=>\$y_value)
{
echo "Age of ".\$y." is : ".\$y_value."
";
}
echo "
Associative array : Descending order sorting by Value
";
\$age=array("Sophia"=>"31","Jacob"=>"41","William"=>"39","Ramesh"=>"40");
arsort(\$age);
foreach(\$age as \$y=>\$y_value)
{
echo "Age of ".\$y." is : ".\$y_value."
";
}
echo "
Associative array : Descending order sorting by Key
";
\$array4=array("Sophia"=>"31","Jacob"=>"41","William"=>"39","Ramesh"=>"40"); krsort(\$array4);
foreach(\$array4 as \$y=>\$y_value)
{
echo "Age of ".\$y." is : ".\$y_value."
";
}
?>
```
```

Sample Output:

```Associative array : Ascending order sort by value
Age of Sophia is : 31
Age of William is : 39
Age of Ramesh is : 40
Age of Jacob is : 41

Associative array : Ascending order sort by Key
Age of Jacob is : 41
Age of Ramesh is : 40
Age of Sophia is : 31
Age of William is : 39

Associative array : Descending order sorting by Value
Age of Jacob is : 41
Age of Ramesh is : 40
Age of William is : 39
Age of Sophia is : 31

Associative array : Descending order sorting by Key
Age of William is : 39
Age of Sophia is : 31
Age of Ramesh is : 40
Age of Jacob is : 41
```

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