我正在尝试创建一段代码,通过使用 PDO 语句查找从数据库返回的最大值来动态设置页面上 slider 的最大值。
我遇到的问题是我无法将关联数组中返回的值转换为整数值,我做错了什么?
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,我是否缺少变量转换的步骤(我对 PHP 相当陌生)
最佳答案
试试这个:
$k = array_keys($res1)[0];
$psiA = (integer) $res[$k]
考虑到您的数组一次仅包含一项这一事实,这也应该适合您:
$psiA = (integer) array_shift(array_values($res1));
或者简单地说:
$psiA = reset($res1);
关于PHP从Assoc数组中获取字符串值并将其转换为字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18486778/