Php 如何从多维数组中获取值

Php 如何从多维数组中获取值,php,pdo,Php,Pdo,我的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] =>

我的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
您可以看到结果同时包含数组和字符串值。我可以选择获取数组或字符串值。但是我更希望得到数组值,因为字符串值都在一起。有人能解释一下我在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;

将您的循环替换为以下内容:

foreach ($result as $k)  // iterate through all datasets
{
    echo $k[0];     // echo price of dataset
}  

尝试将值存储在数组中,而不是回显

$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
}

虽然您通常需要学习多维数组和foreach,但要解决这一特定任务,您需要使用
fetchAll
,只需少量补充:

$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
foreach ($result as $k) 
{
    echo $k;
}   

已经有人回答了,但我在评论中看到你希望他们分开。因此,只需在回音后添加一个

或一个新行空间:

foreach ($result as $k)
{
    echo $k[0]."<br>";
} 
foreach($k)
{
回声$k[0]。“
”; }
但一切都很好,您只需打印值即可显示。感谢您的快速响应,但我之前尝试过,它输出的字符串值为69.8513.97。我需要把69.85和13.97分开。@CarlBarrett要把东西分开,你还需要输出一个分隔符,谢谢你启动了我的大脑。我不知道为什么我以前没有想到这个…(漫漫长夜)!在我的应用程序中,我已经多次这样做了,所以我在上面的问题后面附加了一个解决方案,这个解决方案非常有效。我希望它可以帮助其他人。我的朋友,没有一个开发人员知道一切。因此,没有必要告诉我们需要去学习什么。你的解决方案帮不了什么忙。开发人员有时会头脑发热,开始写垃圾,这可能发生在我们中最好的人身上。我们来到这个网站是为了寻找新的想法,让我们重新开始思考。Daryl Gill提供了引起我注意的最佳想法,请参见下面的解决方案:好主意,非常感谢,但答案并不完全是我想要的,请参见上面问题所附的解决方案。