# Smoothing Data Array PHP

I have an array:
Array
(
[1] => 25
[2] => 50
[3] => 25
)
I would like to make it into:
Array
(
[1] => 50
[2] => 50
)
To do this I split the middle value between 1 and 3. This is the simplest example, where the split is 50,50. I would like to be able to take a 15 element array down to 6 elements.

Any ideas?

[10, 15, 20, 25] Reduced to two elements: 25(10 + 15),45(20 + 25)
[10, 10, 10, 10, 11] Reduced to two elements: 25(10 + 10 + (10/2)),26((10/2) + 10 + 11)
###### Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
This should work just fine:

``````<script language="javascript">
function makeItTwo(arr) {
var retArr = new Array(0, 0); // return array
if ((arr.length % 2)){
var middle = Math.floor(arr.length/2); // middle element
retArr[0] += arr[middle]/2; // add value
retArr[1] += arr[middle]/2; // add value
};
last = arr.length-1; // Last element
for (i=0; i<last; i++) { // first and last, first+1 and last-1...first+n and last-n
retArr[0] += arr[i];
retArr[1] += arr[last];
last--;
};
return retArr;
};

// Testing
var arrTest1 = new Array(10,15,15,25,25,20);
var arrTest2 = new Array(10,15,14,10,20,10,22,25,20);
</script>
``````
0
Author Commented:
Mind posting a php solution :D. Also I used 2 for ease of explanation, it could be any whole number.
0
Commented:
Sorry, I didn't see that is in php, I had done various JavaScript function here today :)

Please tell how this array should result with 3 and 5 elements:

array(10,15,14,10,20,10,22,25,20);

In advance for two elements in php will be something like this:

``````<?
function makeIt(\$arr) {
\$retArr = array_fill(0, 2, 0); // return array

if ((count(\$arr) & 1)){
\$middle = floor(count(\$arr)/2); // middle element
\$retArr[0] += \$arr[\$middle]/2; // add value
\$retArr[1] += \$arr[\$middle]/2; // add value
};
\$last = count(\$arr)-1; // Last element
for (\$i=0; \$i<\$last; \$i++) { // first and last, first+1 and last-1...first+n and last-n
\$retArr[0] += \$arr[\$i];
\$retArr[1] += \$arr[\$last];
\$last--;
};
return \$retArr;
};

// Testing
\$arrTest1 = array(10,15,15,25,25,20);
\$arrTest2 = array(10,15,14,10,20,10,22,25,20);
print_r(makeIt(\$arrTest1));
print_r(makeIt(\$arrTest2));

?>
``````
0

Experts Exchange Solution brought to you by