从关联数组中提取值时遇到问题

时间:2015-04-18 18:21:24

标签: php mysql arrays associative-array

我在使用PHP时遇到了一些基本问题。我想从MYSQL数据库中检索一列数字的平均值。我正在使用SELECT AVG()来获取数据库中的结果。问题是返回的不是浮点数,而是带有一个键的值的关联数组。这是我以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 个答案:

答案 0 :(得分:1)

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 :(得分:0)

1。 如果你总是得到这个多维数组,你可以用reset重置数组的内部指针,以“压扁”第一个数组。这应该可以解决问题:

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']);