2013-09-29 3 views
1

есть ли способ суммировать/подставить символ в php?Математическая операция CHARACTER [не числовая] в php

Например, если

$var1 = 'a'; 
$var2 = 'b'; 
$var3 = 'a'; 

$calculation = $var1 - $var2 + $var3; 

echo $calculation; 

Я хочу вывод как 2a-b

Так же, как мы делали в средней школе алгебры?

+2

Нет, PHP не включает в себя встроенный в Mathematica. – Barmar

+0

oops! Я хотел бы :( – MKM

+1

, и я бы хотел, чтобы я мог кодировать обнаженных супермоделей в php –

ответ

1

Я написал простую функцию, чтобы сделать что-то вроде того, что вы хотите. Это просто пример, вам нужно будет его улучшить, если вы действительно хотите его использовать, но это хороший старт.

Ограничения: Работает только с буквами (не будет работать, если вы добавите цифры, вам придется добавить, что функционал).

ВСЕ буквы должны иметь свой плюс или минус.

Вы должны использовать пробелы перед плюсом или минусом.

Это, безусловно, не самый лучший способ сделать это, так как я сказал, что вам нужно его улучшить. Я написал это быстро, но я немного его протестировал.

<? 
function calc($str){ 
    $data = preg_split("/ /", $str); 
    $used = Array(); 
    $buffer = ""; 
    foreach ($data as $pos=>$letter){ 
     foreach ($data as $pos2=>$letter2){ 
      if ($letter[1] == $letter2[1] && !in_array($pos, $used) && !in_array($pos2, $used) && $pos != $pos2){ 
       $first = $letter[0] == '+' ? 1 : -1; 
       $second = $letter2[0] == '+' ? 1 : -1; 
       $buffer .= ($first+$second).$letter[1]; 
       $used[count($used)] = $pos; 
       $used[count($used)] = $pos2; 
      } 
     } 
    } 
    foreach ($data as $pos=>$letter){ 
     if (!in_array($pos, $used)){ 
      $buffer .= $letter; 
     } 
    } 
    return $buffer; 
} 
echo calc("+a -b +a"); 
?> 

Выход:

2a-b 
Смежные вопросы