<?php /** * Created by PhpStorm. * User: Admin * Date: 2/17/2016 * Time: 8:55 PM */ // последний аргумент это число на которое мы изменяем предпоследний элллемнт function operate() { $nums = func_get_args(); $v = $nums[count($nums) - 1]; $t = $nums[count($nums) - 2]; if ($t) { foreach ($nums as &$num) { $num += $v; } } else { foreach ($nums as &$num) { $num -= $v; } } return $nums; } print_r(operate(1, 2, 1, 2, 1, 0, 10)); echo '</br>';
} //echo newSum(1,1,1,1,2,3,6,5,4,7,1); /*последний элемент - 0\1 (отнимать\плюсовать) предпоследний элемент - на сколько последние два элемента не трогаем возвращаем массив*/ function operate(...$nums) { //$nums=func_get_args(); $type = $nums[count($nums) - 1]; $val = $nums[count($nums) - 2]; if ($type) { foreach ($nums as $k => $v) { if ($k >= count($nums) - 2) { break; } $nums["{$k}"] += $val; } } else { foreach ($nums as $k => $v) { if ($k >= count($nums) - 2) { break; } $nums["{$k}"] -= $val; } } return $nums; } //echo newSum(1,1,1,1,2,3,6,5,4,7,1); print_r(operate(1, 1, 1, 1, 2, 3, 6, 5, 4, 10, 0));
$c = ["2", "1", "+"]; function operate($array) { $stack = array(); $operations = ['+', '-', '*', '/']; foreach ($array as $i) { if (!in_array($i, $operations)) { $stack[] = $i; } else { $last = array_pop($stack); $prev = array_pop($stack); if ($i == '+') { $stack[] = $prev + $last; } if ($i == '-') { $stack[] = $prev - $last; } if ($i == '*') { $stack[] = $prev * $last; } if ($i == '/') { $stack[] = $prev / $last; } } } print_r($stack); } operate($a); operate($b); operate($c);