2016-03-21 22 views
0

Dinamik bir dizim var.
nasıl ben dinamik olarak bunu çözebilir, varsayalımDinamik dizi üzerinde matematiksel hesaplama gerçekleştirin

array (size=3) 
    0 => string '20' (length=2) 
    1 => string '-' (length=1) 
    2 => string '5' (length=1) 

onun sonucu tanımlanmamış 20-5 = 5

Dizi büyüklüğünde olacak Lets?

+3

'20 - 5 = 5' tamam. – Rizier123

+0

Ne kadar farklı işlenen olabilir? (4/2) * 5 - 1 'gibi bir şey 9 numara dizisinde bir olasılık olabilir mi? –

+0

opertore, bir dizideki +, -, *,/ancak işlenenlerin sayısı tanımlanmayacaktır, ancak sorum bu diziyi kullanarak nasıl çözülür? –

cevap

2

Aşağıdaki kodu kullanabilirsiniz. Tabii ki, bazı sınırlamaları var. Ne yapmak istediğinize ve neden yaptığınıza bağlı.

<?php 

$array = array(
    '20', 
    '-', 
    '5', 
    '*', 
    '10' 
); 

$output = null; 
$symbol = null; 
foreach ($array as $item) { 
    if ($item == '+' || $item == '-' || $item == '*' || $item == '/') { 
     if ($output === null) { 
      die("First item should be numeric! "); 
     } 
     $symbol = $item; 
     continue; 
    } elseif (!is_numeric($item)) { 
     die("unknown symbol: " . $item); 
    } 

    // is numeric 
    // first symbol 

    if ($output == null) { 
     $output = $item; 
     continue; 
    } 

    if ($symbol === null) { 
     die('Two numbers in a row!!'); 
    } 

    switch ($symbol) { 
     case '+': 
      $output += $item; 
      break; 
     case '-': 
      $output -= $item; 
      break; 
     case '*': 
      $output *= $item; 
      break; 
     case '/': 
      $output /= $item; 
      break; 

    } 
} 

echo "Calculation is: " . $output; 
+1

Küçük hata bölümle: '$ output & = $ item;' '$ output/= $ item;' – maxhb

1

PHP'nin en çok nefret ettiği ve korktuğu işlevin kullanışlı olduğu birkaç durumdan biri gelir.

kötülük eval():

$input = array('20', '-', '5'); 

// build formula from array by glueing values together 
$formula = implode(' ', $input); 

// execute the formula and store result in $result 
eval('$result = ' . $formula . ';'); 

// voila! 
echo $formula . ' = ' . $result; 

eval() kullanımı hakkında güzel bir şey, tüm matematiksel işlemler php bilinen ve hatta parantez işleme tam olarak desteklenir kullanabilirsiniz olmasıdır.

Test için tanımlanan daha fazla formülle çalışan bir örnek için http://sandbox.onlinephpfunctions.com/code/71ffc94238a5510cd7b24632fc7a8b9b5cb2c2c0 adresini ziyaret edin.

+0

teşekkürler @maxhb. günümü kurtardın –

+0

Eğer gerçekten bu gününü kurtardıysa, çözümü kabul etmelisiniz ;-) – maxhb

İlgili konular