私は動的配列を持っています。
は、どのように私は、動的にそれを解決することができ、仮定する動的配列で数学的計算を実行する
array (size=3)
0 => string '20' (length=2)
1 => string '-' (length=1)
2 => string '5' (length=1)
その結果が定義されていません20-5 = 5
配列のサイズになりますことができますか?
私は動的配列を持っています。
は、どのように私は、動的にそれを解決することができ、仮定する動的配列で数学的計算を実行する
array (size=3)
0 => string '20' (length=2)
1 => string '-' (length=1)
2 => string '5' (length=1)
その結果が定義されていません20-5 = 5
配列のサイズになりますことができますか?
次のコードを使用できます。もちろん、いくつかの制限があります。あなたが何をしたいのか、なぜそれをやっているのかによって異なります。
<?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;
小さな間違い部門: '$ output&= $ item;'は '$ output/= $ item;' – maxhb
phpsが最も嫌われて機能を恐れる数少ないケースの1つが便利です。
悪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()
を使用してのいいところは、あなたがPHPで知られているすべての数学演算を使用することができ、さらにはブラケットの取り扱いが完全にサポートされていることです。
http://sandbox.onlinephpfunctions.com/code/71ffc94238a5510cd7b24632fc7a8b9b5cb2c2c0を参照してください。より多くの数式をテスト用に定義しています。
@maxhbに感謝します。あなたが私の日を救った –
これは本当にあなたの一日を保存した場合、解決策を受け入れる必要があります;-) – maxhb
「20-5 = 5」大丈夫です。 – Rizier123
いくつのオペランドを持つことができますか? '(4/2)* 5 - 1'のようなものがサイズ9の配列で可能性がありますか? –
opertoreは+、 - 、*、/ですが、配列内のオペランドの数は定義されていませんが、私の質問は配列を使ってこれを解決する方法ですか? –