我的db查询结果在转储和查询正在执行预期时看起来像这样,但是我在获取数组值时遇到了一些问题。我正在使用PHP PDO来获得结果。
$result = $_stmt->fetchAll();
$row = count($result);
print_r($result);
Array ( [0] => Array ( [SUM(od_price * od_qty)] => 69.85 [0] => 69.85 )
[1] => Array ( [SUM(od_price * od_qty)] => 13.97 [0] => 13.97 )
) 69.8513.97
您可以看到结果包含数组和字符串值。我有一个选项来获取数组或字符串值。但我宁愿得到数组值,因为字符串值都是togather。有人可以解释我在做什么,这在foreach循环中是错误的吗?
if($row == 2)
{
foreach ($result as $k)
{
echo $price_1 = $k[0][0]; // expected 69.85
echo $price_2 = $k[0][1]; // expected 13.97
}
unset($k);
}
我需要获得预期的值,但我得到的是全部字符串值。
在回顾下面的解决方案之后,我想出的就是我想要的东西。
$result = $_stmt->fetchAll();
$row = count($result);
$price = "";
if($row == 2)
{
foreach ($result as $k)
{
$price .= $k[0].',';
}
}
// remove the last comma
$price = substr($price, 0, -1);
list($totalPurchase, $shippingCost) = explode(",",$price);
$orderAmount = $totalPurchase + $shippingCost;
echo 'The amount is: '.$orderAmount;
答案 0 :(得分:1)
尝试将值存储在数组中而不是回显它们。
$price_1 = array(); $price_2 = array();
if($row == 2)
{
foreach ($result as $k)
{
array_push($price_1, $k[0][0]); // expected 69.85
array_push($price_2, $k[0][1]); // expected 13.97
}
// print_r($price_1); //should store all the price1s
// print_r($price_2); // should store all the price2s.
// uncomment to these lines to view array contents
}
答案 1 :(得分:1)
虽然你需要学习多维数组和foreach,但为了解决这个特殊的任务,你需要使用fetchAll
而不需要附加内容:
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
foreach ($result as $k)
{
echo $k;
}
答案 2 :(得分:0)
用这个替换你的循环:
foreach ($result as $k) // iterate through all datasets
{
echo $k[0]; // echo price of dataset
}
答案 3 :(得分:0)
它已经被回答,但我在评论中看到你希望它们分开。因此,只需在echo之后连接"<br>"
或新的行间距:
foreach ($result as $k)
{
echo $k[0]."<br>";
}