// arr[first] = arr[first] (itself) * arr[next];
// arr[last] = prev * arr[last] (itself);
function MultiplyNextPrevious(&$arr) {
$size = count($arr);
if ($size <= 1) {
return;
}
$prev = $arr[0];
$arr[0] = $arr[0] * $arr[1];
for ($i = 1; $i < $size - 1; $i++) {
$curr = $arr[$i];
$arr[$i] = $prev * $arr[$i + 1]; // arr[i + 1] = next
$prev = $curr;
}
$arr[$size - 1] = $prev * $arr[$size - 1];
}
$arr = array(2, 3, 5, 6, 12, 8, 10, 7);
MultiplyNextPrevious($arr);
for ($i = 0; $i < count($arr); $i++) {
echo $arr[$i] . " ";
}
/*
run:
6 10 18 60 48 120 56 70
*/