2015-02-07 3 views
2

У меня есть две переменные:разница Вычислить числовых значений

$low = 0; 
$high = 100; 

Используя эти две переменные, я хочу, чтобы установить 4 новых переменных, начиная с низкого значения происходит на высоком уровне. Таким образом, в этом случае это будет:

$low = 0; 
$value_1 = 20; 
$value_2 = 40; 
$value_3 = 60; 
$value_4 = 80; 
$high = 100; 

Какой расчет можно сделать для достижения этого? Значения $low и $high были установлены только для объяснения моего вопроса. Эти два значения задаются пользователем.

+0

вы хотите установить значение в диапазоне от 0 до 100 – user3647254

+0

@ user3647254 проблема заключается в том, что $ низким и $ высокий счет установленным пользователем, поэтому я не знаю, к чему они настроены. Это может быть, например, $ low = 50 и $ high = 1498 ... –

ответ

2

Если я правильно понимаю, что вы хотите расстояние между $ low и $ high равномерно распределено между четырьмя значениями.

Я думаю, что алгоритм говорит само за себя в коде ниже ...

<?php 
$low = 0; //substitute user entry 
$high = 100; //substitute user entry 
$difference = $high - $low; 
$increment = $difference/5; 
//we use 5 because we need four divisible values, you can change this 
//based on how many incremental values you want. 
$step = $low; 
echo $low."<br>"; 
for($x=0;$x<4;$x++) 
{ 
    $step+=$increment; 
    echo $step."<br>"; 
} 
echo $high."<br>"; 
?> 

Для $low = 0, $high = 100 - это напечатает:

0 
20 
40 
60 
80 
100 

Для $low = 57, $high = 94 - это напечатает:

57 
64.4 
71.8 
79.2 
86.6 
94 

Для $low =222, $high = 1000 - распечатать:

222 
377.6 
533.2 
688.8 
844.4 
1000 

Вы можете round() по мере необходимости. Также убедитесь, что вы делаете базовую проверку для $ low и $ high, например, что $ low на самом деле меньше $ high и т. Д.

1

После прочтения ваших обновления, может быть range достаточно для ваших нужд:

$low = 0; $high = 100; $steps = 5; 

$value = range($low, $high, ($high-$low)/$steps); 

print_r($value); 

Массив ( [0] => 0 1 => 20 2 => 40 [3] => 60 [4] => 80 [5] => 100 )

See test at eval.in (ссылка истекает в ближайшее время)

+0

OP запросил переменные, а не массив – user3647254

+1

Это очень приятно, спасибо вам большое! –

+0

Интересно, лучше ли с вашей точки зрения или с подходом рейдинка с точки зрения производительности. –

0

Просто запустите цикл и создать переменную. Используйте код ниже

<?php 
$low = 0; 
$high = 100; 
$step = 20; 

$f = 0; 
for($i=$low; $i<=$high; $i+=$step){ 
    ${"variable_$f"} = $i; 
$f++; 
} 
echo $variable_1; 

Надеюсь, это вам поможет.

+1

Проблема в том, что пользовательский счетчик $ low и $ high задается пользователем, поэтому я не знаю, к чему они настроены. Это может быть, например, $ low = 50 и $ high = 1498 ... так что не получилось бы установить $ step, правильно? –

+0

На самом деле я немного смущен, вы можете публиковать значения $ low, $ high и $ step и нужный результат – user3647254

+0

Извините, я не объяснил правильно. Например, значения могут быть установлены в значение $ low = 50 и $ high = 1498. Это означает, что наш скрипт должен вычислить $ step, используя эти два значения И ТОГДА вычислить 4 значения, которые мы после. Вы понимаете, что я имею в виду? –

0

Вы можете использовать цикл для создания массива $low, &high и $step может иметь любое значение

$low = 0;   
$high = 100; 

$step = 20; 

$var = array(); 

for($x = 0; $x < $high/$step; $x++) { 
    if($x == $low || $x == $high) { 
     continue; 
    } else { 
     $var[$x] = $x * $step; 
    } 
} 

массив будет выглядеть

Array ([1] => 20 [2] => 40 [3] => 60 [4] => 80) 
+0

Проблема в том, что пользователи $ low и $ high задаются пользователем, поэтому я не знаю, на что они установлены. Это может быть, например, $ low = 50 и $ high = 1498 ... –

+0

$ low, & high и $ step могут иметь любое значение – ALeifsson

0

Я бы вычитал $ high из $ low, а затем разделил число переменных, которые я хочу иметь.Пример:

$ low = 50; $ high = 1498;

Я хочу создать 4 переменные.

($ высокого - $ низкие)/4 = 362

Теперь я знаю $ шаг, и я могу сделать для цикла

для ($ низкого; $ низкого = < $ высокого; $ низкого + $ шаг) {}

0

вы можете написать код, как это просто и конкретно:

`<?php` 
     $low = 0; 
     $high = 100; 
     $stepInc = 20; 
     $i ; 
     for ($i=$low; $i <= $high ; $i+=$stepInc) { 
      echo $i . "<br>"; 
     } 
?> 

and the out will be: 

0 
20 
40 
60 
80 
100 
Смежные вопросы