﻿ 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

PHP: ?: operator (the 'Elvis operator') in PHP

It evaluates to the left operand if the left operand is truthy, and the right operand otherwise.

In pseudocode,

`foo = bar ?: baz;`

roughly resolves to

`foo = bar ? bar : baz;`

or

```if (bar) {
foo = bar;
} else {
foo = baz;
}
```

with the difference that bar will only be evaluated once.

You can also use this to do a "self-check" of foo as demonstrated in the code example you posted:

`foo = foo ?: bar;`

This will assign bar to foo if foo is null or falsey, else it will leave foo unchanged.

Some more examples:

```<?php
var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
?>
```

By the way, it's called the Elvis operator.

Ref : https://bit.ly/2SYEI83