3

のような文字列を含むフィールドがデータベースにあります21;48;33;22;31。それを数学的計算に変換したいと思います21+48+33+22+31

$points = "21;48;33;22;31";
$points = str_replace(";","+",$points );
$points = preg_replace('/[^0-9\+\-\*\/\s]+/', '', $points);
echo $points;

しかし、それは単に機能しません。合計の代わりに同じ文字列 "21+48+33+22+31" があります。

4

6 に答える 6

8
$points = "21;48;33;22;31";
$points = explode(';',$points );
$points = array_sum($points);
echo $points;
于 2013-03-25T09:06:13.850 に答える
2
$points = "21;48;33;22;31";
$arr = explode(";", $points);
$points = 0;
foreach($arr as $key => $rows){
    $points += $rows[$key];
}
echo $points;

上記のコードを試してみると、適切な結果が得られます。

または、それを試すこともできます:

$points = "21;48;33;22;31";
$arr = explode(";", $points);
echo $points = array_sum($arr);
于 2013-03-25T09:05:33.327 に答える
0

最も簡単な方法は、文字列を爆発させることです。

次に、結果の配列に対して foreach を反復処理して、それらを計算できます。

$points = "21;48;33;22;31";
$points = explode(";", $points);
$calc = 0;

forearch($points as $point) {
    $calc += $point;
}

または、array_sumを使用できます:

$points = "21;48;33;22;31";
$points = explode(";", $points);
$calc = array_sum($points);

そんな感じ。おそらく、いくつかのより短い方法があります。

于 2013-03-25T09:06:02.267 に答える
0
$string = "21;48;33;22;31";

$string = explode(";" , "21;48;33;22;31");


$point = 0;
foreach($string as $num)
{       // by using (int) you can convert string to int.
    $point = (int)$num + $point;

}

print($point);
// output 
155
于 2013-03-25T09:06:28.763 に答える
0

それを分解して合計をループします...

 <?php
        $total = 0; // for getting the total
        $points = "21;48;33;22;31";
        $points = explode(';',$points);
     for($i=0;$i<count($points);$i++){
        $total+= $points[$i];
    }
    echo $total;
    ?>
于 2013-03-25T09:11:35.950 に答える
0
<?php
eval('$sum = ' . str_replace(';','+','21;48;33;22;31').';');
echo $sum;
于 2013-03-25T09:20:44.017 に答える