错误的结果:两个变量的总和

时间:2014-06-01 05:54:08

标签: php logic

我有一个简单的问题,但我仍然无法解决。

工作代码

(int)$sum_price=4;
(int)$price_per_sum = (int)$spo[$key]*(int)$gpp['price'];
echo $sum_price = ($sum_price + $price_per_sum);

当我将4更改为变量时,sum()的结果为字符串。

结果变为字符串

 $spo[$key] = 1;
 $gpp['price'] = 2;
(int)$sum_price=4;
(int)$price_per_sum = (int)$spo[$key]*(int)$gpp['price'];
 echo $sum_price = ($sum_price + $price_per_sum);

结果是42,但应该是6。使用(int)不会改变我的结果。

问题代码

# Get All Payment 
(int)$sum_price = 0;
$sum_price_product = explode('|',$_SESSION['product']);
$spo = explode('|',$_SESSION['order']);
foreach($sum_price_product as $key=>$spp)
{
  if($spp!='')
  {
    $get_product_price = $dbc->select("sh_product"," id = '{$spp}'","id");
    $gpp = mysql_fetch_array($get_product_price['sql']);
    (int)$price_per_sum = $spo[$key] * $gpp['price'];
    $sum_price = $sum_price + $price_per_sum;
  echo $sum_price;
  }
}

http://codepad.org/Zo9X2PY5

2 个答案:

答案 0 :(得分:0)

在这种情况下不需要类型铸造...... 请将正确的关联数组键设为"price"'price'而不只是price ...

$sum_price = 4;
$price_per_sum = $spo[$key] * $gpp['price'];
$sum_price = ($sum_price + $price_per_sum);
echo $sum_price;

你的例子:

$spo[$key] = 1;
$gpp['price'] = 2;
$sum_price = 4;
$price_per_sum = $spo[$key] * $gpp['price'];
$sum_price = ($sum_price + $price_per_sum);
echo $sum_price;

# Get All Payment 
(int)$sum_price=0;
$sum_price_product = explode('|',$_SESSION['product']);
$spo = explode('|',$_SESSION['order']);
foreach($sum_price_product as $key=>$spp)
{
if($spp!='')
{
$get_product_price = $dbc->select("sh_product"," id = '{$spp}'","id");
$gpp = mysql_fetch_array($get_product_price['sql']);
(int)$price_per_sum = $spo[$key]*$gpp['price'];
$sum_price = $sum_price + $price_per_sum;
echo $sum_price;
}
}

答案 1 :(得分:-1)

在这种情况下不需要进行强制转换。请查看以下代码并试一试,它适用于我:

$spo[0] = 1;
$gpp['price'] = 2;
$sum_price=4;
$price_per_sum = $spo[0]*$gpp['price'];
$sum_price = $sum_price + $price_per_sum;
echo $sum_price;

这里在$ spo [0]中,我考虑了单值但你可以用循环结构中的$ key替换'0'。

请在此处查看我的工作代码:http://codepad.org/zH2q2WjH