2013-08-20 7 views
-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 

결과에 배열과 문자열 값이 모두 포함되어 있습니다. 배열 또는 문자열 값을 가져올 수있는 옵션이 있습니다. 하지만 문자열 값이 모두 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

그러나 모든 것이 좋지만 값만 인쇄하면 나타납니다. –

답변

0

이 당신의 루프를 대체 :

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

빠른 응답을 보내 주셔서 감사합니다.하지만 이전에 시도했는데 문자열 값 69.8513.97을 출력했습니다. 나는 69.85와 13.97을 분리시켜야한다. –

+0

@CarlBarrett 구분 기호를 출력하려면 –

1

.. 배열의 값을 저장하는 대신에 그것들을 울리는 시도 당신이 다차원 배열과 foreach 문을 배울 필요가 있지만

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

좋은 아이디어와 감사합니다.하지만 대답은 제가 찾던 것이 아닙니다. 위의 질문에 덧붙인 해결책을보십시오. –

1

일반적으로이 특정 작업을 해결하려면 fetchAll과 약간의 부록이 필요합니다.

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

내 친구, 모든 것을 아는 개발자가 없습니다. 따라서 배울 점이 무엇인지 말할 필요가 없습니다. 당신의 솔루션은별로 도움이되지 못했습니다. 개발자는 때때로 뇌사 상태가되어 쓰레기를 쓰기 시작합니다. 이것은 우리에게도 일어날 수 있습니다. 우리는이 사이트에서 아이디어를 찾고 다시 생각하게 만듭니다. Daryl Gill이 제 관심을 얻은 최고의 아이디어를 제공해주었습니다. 그의 솔루션을 아래에서 확인하십시오. –

0

이미 답변을 드렸지 만, 의견에서 별개의 것을 사용하고 싶습니다. 따라서 연결된 후 "<br>" 또는 에코 뒤에 새 줄 간격을 연결하면됩니다.

foreach ($result as $k) 
{ 
    echo $k[0]."<br>"; 
} 
+0

내 머리를 차기 시작하는 데 감사드립니다. 나는 왜 내가 전에 이것을 생각하지 않았는지 모르겠다 ... (긴 밤)! 내 응용 프로그램에서 여러 번이 작업을 수행 했으므로 문제가 해결 된 경우 위의 질문에 추가했습니다. 다른 사람에게 도움이되기를 바랍니다. –

관련 문제