2014-12-03 4 views
0

У меня есть формула, которая разрабатывает, как выработать накопитель ставок.Подходящий способ написать формулу математики

Формула:

Ставка х (дробные коэффициенты + 1) х (дробные коэффициенты + 1) и т.д. ...

Я ищу написать функцию PHP, которая перебирает а затем возвращает значение.

У меня есть массив следующим образом (содержит дробные коэффициенты) ...

$odds = array(
'8/15', 
'11/2', 
'13/2', 
'7/2' 
); 

Некоторые примеры PHP кода, что показывает, как я могу это сделать (без функции) ...

$result = 10 * (8/15 + 1) * (11/2 + 1) * (13/2 + 1) * (7/2 + 1); 
echo number_format($result,2); // 3,363.75 

и моя ставка установлена ​​как '10'.

Что мне нужно сделать, это цикл через массив коэффициентов и умножить их на кронштейнах и начать с умножить на костре так для этого тестового примера 10.

Может кто-нибудь предложить способ, чтобы написать это ? Когда я пытаюсь писать в *, я продолжаю получать ошибки PHP.

Если тема не подходит для сообщества, пожалуйста, сообщите, и я удалю.

Благодаря

+1

вы должны использовать цикл Еогеасп, и, возможно, обернуть все это в функции для упрощения кода – pomeh

ответ

3

Что-то, как это должно работать

function compute ($stake, $values) { 
    $result = $stake; 

    foreach ($values as $val) 
    { 
     $parts = explode('/', $val); 
     $result *= ($parts[0]/$parts[1] + 1); 
    } 

    return $result; 
} 


$stake = 10; 
$odds = array (
    '8/15', 
    '11/2', 
    '13/2', 
    '7/2' 
); 
$result = compute($stake, $odds); 
var_dump($result); 

Вот это рабочая демо вы можете играть с: http://3v4l.org/RNAGH

+0

Блестяще, спасибо @pomeh, что я делал.= then, помещая * in, Отсюда мои ошибки PHP. Спасибо! – StuBlackett

-1

Что-то вроде этого, я полагаю,

$res = stake; 
foreach ($odds as $odd) { 
    $res *= ((intval(explode("/", $odd)[0])/intval(explode("/", $odd)[1])) + 1); 
} 
echo $res; 
+0

Несколько ошибок. Сначала он выглядел как Pavascript. Отсутствуют $ и отсутствующие аргументы. – AbraCadaver

+0

Я просто постоянно улучшаю свой ответ, не слишком быстр))) –

+0

Вы можете улучшить правильный ответ. Не отправляйте нерабочую, не подлежащую анализу, чтобы улучшить. – AbraCadaver

1

Вы имеете в виду этот путь

$stake = 10; 
$odds = array(
'8/15', 
'11/2', 
'13/2', 
'7/2' 
); 

function formula($stake, array $odds){ 
    $result = $stake; 

    foreach ($odds as $odd) { 
     $digit = explode('/',$odd); 
     $result *= ($digit[0]/$digit[1] + 1); 
    } 
    return $result; 
} 

echo formula($stake, $odds); 
+0

почему голос? – codinginsane

+1

Удивительно то же самое, ответы на несколько человек были опущены – StuBlackett

+1

@StuBlackett надеюсь, что мой ответ помогает – codinginsane

2

Я чувствую, что вы получите непредсказуемое поведение с типом жонглирования PHP, так дробя фракционные струи с использованием взрывов будут наилучшим образом

function calculate($stake, $odds) 
{ 
    $res = $stake; 
    foreach ($odds as $odd) { 
     $split = explode('/', $odd); 
     $res *= ($split[0]/$split[1]) + 1; 
    } 
    return $res; 
} 
echo calculate(10, $odds); 
+0

' Division by zero' – AbraCadaver

+0

@AbraCadaver Исправлена ​​ошибка с именем – sjagr

Смежные вопросы