从关联数组中提取值时遇到问题
Trouble with extracting a value from an associative array
我在使用 PHP 时遇到一些基本问题。我想从 MYSQL 数据库中检索一列数字的平均值。我正在使用 SELECT AVG() 来获取数据库中的结果。问题是返回的不是浮点数,而是一个 key:value 的关联数组。这是我以 json 形式返回的那种东西:
array(1) { [0]=> array(1) { ["AVG(enterpriseAppDev.employee.age)"]=> string(7) "54.4538" } }
在我的 PHP 项目中,我将以上内容分配给变量 $average。
谁能告诉我如何提取 $average 变量的值 (54.4538) 并在以后使用它?
我试过使用 foreach 循环来获取这样的值
foreach ($average as $x => $x_value) {
$average = $x_value;
return $average;
}
我也曾尝试使用 STDEV 和 STDEVP 在 SQL 中执行标准偏差,但我收到一条错误消息,指出这些函数不存在。
如有任何帮助,我们将不胜感激。
2 个问题:
您将值 $average
分配到循环中,而它在循环参数中...可能会导致崩溃...
所以你可以使用 return $x_value
而不用把它变成 $average
.
然后,你在这里不需要循环就这样做(没有循环)
return $average[0]['AVG(enterpriseAppDev.employee.age)']
如果你真的想要一个循环,你可以这样做:
foreach ($average as $line_number => $line) {
foreach($line as $key => $x_value) {
return $x_value;
}
}
1。
如果你总是得到这个多维数组,你可以将数组的内部指针 reset 重置为 "flatten" 第一个。这应该可以解决问题:
var_dump(reset($average[0]));
// or you can do it twice to get the same result as before
$average = reset($average);
var_dump(reset($average));
2。
但也许您可以在 SQL:
中使用别名获得更好的键名
SELECT AVG() AS myavg
// so you should end up with a result like:
$queryResult = array(
array(
"myavg" => "54.4538"
)
);
// and get the average
$average = reset($queryResult);
var_dump($average['myavg']);
3。
或者更奇怪的是,如果您使用 php 5.4,您可以直接从函数结果中获取数组引用:
var_dump(reset($average)['avg']);
我在使用 PHP 时遇到一些基本问题。我想从 MYSQL 数据库中检索一列数字的平均值。我正在使用 SELECT AVG() 来获取数据库中的结果。问题是返回的不是浮点数,而是一个 key:value 的关联数组。这是我以 json 形式返回的那种东西:
array(1) { [0]=> array(1) { ["AVG(enterpriseAppDev.employee.age)"]=> string(7) "54.4538" } }
在我的 PHP 项目中,我将以上内容分配给变量 $average。
谁能告诉我如何提取 $average 变量的值 (54.4538) 并在以后使用它?
我试过使用 foreach 循环来获取这样的值
foreach ($average as $x => $x_value) {
$average = $x_value;
return $average;
}
我也曾尝试使用 STDEV 和 STDEVP 在 SQL 中执行标准偏差,但我收到一条错误消息,指出这些函数不存在。
如有任何帮助,我们将不胜感激。
2 个问题:
您将值 $average
分配到循环中,而它在循环参数中...可能会导致崩溃...
所以你可以使用 return $x_value
而不用把它变成 $average
.
然后,你在这里不需要循环就这样做(没有循环)
return $average[0]['AVG(enterpriseAppDev.employee.age)']
如果你真的想要一个循环,你可以这样做:
foreach ($average as $line_number => $line) {
foreach($line as $key => $x_value) {
return $x_value;
}
}
1。 如果你总是得到这个多维数组,你可以将数组的内部指针 reset 重置为 "flatten" 第一个。这应该可以解决问题:
var_dump(reset($average[0]));
// or you can do it twice to get the same result as before
$average = reset($average);
var_dump(reset($average));
2。 但也许您可以在 SQL:
中使用别名获得更好的键名SELECT AVG() AS myavg
// so you should end up with a result like:
$queryResult = array(
array(
"myavg" => "54.4538"
)
);
// and get the average
$average = reset($queryResult);
var_dump($average['myavg']);
3。 或者更奇怪的是,如果您使用 php 5.4,您可以直接从函数结果中获取数组引用:
var_dump(reset($average)['avg']);