【问题标题】:Trouble with extracting a value from an associative array从关联数组中提取值的问题
【发布时间】:2015-06-25 14:20:54
【问题描述】:

我在使用 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 中执行标准偏差,但我收到错误消息,指出这些函数不存在。

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql arrays associative-array


    【解决方案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;
        }
    }
    

    【讨论】:

    • 感谢您的建议,我会尝试一下。
    【解决方案2】:

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

    【讨论】:

    • 感谢您对此的建议,我已尝试在 SQL 中使用别名,它为我简化了事情。
    猜你喜欢
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 2016-08-13
    • 2015-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多