﻿ PHP Array Exercise: Sort an array of positive integers using the Bead-Sort Algorithm - w3resource # PHP Array Exercises : Sort an array of positive integers using the Bead-Sort Algorithm

## PHP Array: Exercise-10 with Solution

Write a PHP program to sort an array of positive integers using the Bead-Sort Algorithm.

According to Wikipedia "Bead-sort is a natural sorting algorithm, developed by Joshua J. Arulanandham, Cristian S. Calude and Michael J. Dinneen in 2002. Both digital and analog hardware implementations of bead sort can achieve a sorting time of O(n); however, the implementation of this algorithm tends to be significantly slower in software and can only be used to sort lists of positive integers".

Input array : Array (  => 5  => 3  => 1  => 3  => 8  => 7  => 4  => 1  => 1  => 3 )

Sample Solution:

``````<?php
function columns(\$uarr)
{
\$n=\$uarr;
if (count(\$n) == 0)
return array();
else if (count(\$n) == 1)
return array_chunk(\$n, 1);
array_unshift(\$uarr, NULL);
\$transpose = call_user_func_array('array_map', \$uarr);
return array_map('array_filter', \$transpose);
}
{
foreach (\$uarr as \$e)
\$poles []= array_fill(0, \$e, 1);
return array_map('count', columns(columns(\$poles)));
}
echo 'Original Array : '.'
';
print_r(array(5,3,1,3,8,7,4,1,1,3));
echo '
';
?>
```
```

Sample Output:

```Original Array :
Array
(
 => 5
 => 3
 => 1
 => 3
 => 8
 => 7
 => 4
 => 1
 => 1
 => 3
)

Array
(
 => 8
 => 7
 => 5
 => 4
 => 3
 => 3
 => 3
 => 1
 => 1
 => 1
)
```

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