2013-08-28 57 views
0

我想創建一段代碼,它將通過查找從我的數據庫返回的最大值使用PDO聲明。PHP從Assoc數組中獲取字符串值,並將其轉換爲字符串進行比較

我遇到的問題是我無法將我的assoc數組中返回的值轉換爲整數值,我做錯了什麼? PDO語句

 $maxHGPM = $connection->prepare("SELECT MAX(high_gpm) FROM pumps WHERE pump_type = :pType AND pump_category = :cVal"); 
     $maxHGPM->bindParam(':pType', $pType, PDO::PARAM_STR); 
     $maxHGPM->bindParam(':cVal', $cVal, PDO::PARAM_STR); 
     $maxHGPM->execute(); 
     $res3 = $maxHGPM->fetch(PDO::FETCH_ASSOC); 


     $maxFGPM = $connection->prepare("SELECT MAX(flow_gpm) FROM pumps WHERE pump_type = :pType AND pump_category = :cVal"); 
     $maxFGPM->bindParam(':pType', $pType, PDO::PARAM_STR); 
     $maxFGPM->bindParam(':cVal', $cVal, PDO::PARAM_STR); 
     $maxFGPM->execute(); 
     $res4 = $maxFGPM->fetch(PDO::FETCH_ASSOC); 

測試代碼和整數轉換

 // TEST CURRENT SET VALUES 
     var_dump($res1); 
     var_dump($res2); 
     var_dump($res3); 
     var_dump($res4); 

     // INTEGER CONVERSION 
     $psiA = (integer) array_keys($res1)[0]; 
     var_dump($psiA); 

     // PERFORM LOGICAL COMPARISONS 
     if(array_keys($res1)[0] >= array_keys($res2)[0]){ 
      $psiOut = $res1; 
     } else { 
      $psiOut = $res2; 
     } 

     if(array_keys($res3)[0] >= array_keys($res4)[0]){ 
      $gpmOut = $res3; 
     } else { 
      $gpmOut = $res4; 
     } 

     var_dump($psiOut); 
     var_dump($gpmOut); 

當代碼運行由$ PSIA傾倒的值是0,我缺少用於可變變換的步驟(I的

實施例PHP相當新)

+0

什麼的'的var_dump輸出($ RES1) ;'? – rgin

+0

http://gyazo.com/a9c9218605b1ec04b9b8c0741e4ac7c3 - 這裏你可以看到所有的轉儲輸出 - $ res1具體是'MAX(high_psi)'=>字符串'14406'(長度= 5) – Alex

+0

該截圖看起來好像它正在工作按照預期,但在這裏,你可以看到邏輯比較是inccorect http://gyazo.com/13c52c76c9ac75303256d28b207b7605我認爲它目前比較它的字符串長度 – Alex

回答

1

試試這個:

$k = array_keys($res1)[0]; 
$psiA = (integer) $res[$k] 

考慮的事實,你的陣列只包含一個項目的時間,這也應該爲你工作:

$psiA = (integer) array_shift(array_values($res1)); 

或者乾脆:

$psiA = reset($res1); 
+0

工作的一種享受,謝謝里金! – Alex

相關問題