【问题标题】:PHP | Convert array | Count 'same' values in array with objects [duplicate]PHP |转换数组 |用对象计算数组中的“相同”值[重复]
【发布时间】:2019-09-17 08:19:04
【问题描述】:

我正在尝试将一个数组转换为一个数组,其中特定值在另一个值上“区分”相加。

让我具体一点:

Array
(
    [0] => stdClass Object
        (
            [id_space] => LIVING
            [running_meters] => 4.22
        )

    [1] => stdClass Object
        (
            [id_space] => LIVING
            [running_meters] => 9.69
        )

    [2] => stdClass Object
        (
            [id_space] => LIVING
            [running_meters] => 32.79
        )

    [3] => stdClass Object
        (
            [id_space] => KITCHEN
            [running_meters] => 30.34
        )

    [4] => stdClass Object
        (
            [id_space] => KITCHEN
            [running_meters] => 22.83
        )

    [5] => stdClass Object
        (
            [id_space] => KITCHEN
            [running_meters] => 24.00
        )

    [6] => stdClass Object
        (
            [id_space] => HALL
            [running_meters] => 5.83
        )

    [7] => stdClass Object
        (
            [id_space] => HALL
            [running_meters] => 21.81
        )

)

转换为:

Array
(
    [0] => stdClass Object
        (
            [id_space] => LIVING
            [running_meters] => 46.7
        )

    [1] => stdClass Object
        (
            [id_space] => KITCHEN
            [running_meters] => 53,17
        )

    [2] => stdClass Object
        (
            [id_space] => HALL
            [running_meters] => 24.00
        )       

)


所以我得到了每个“空间”的 running_meters 的总和。

提前致谢,不胜感激。

我认为在网上搜索了所有相关问题,但所有这些都计算了数组中的项目数,而不是值的总和。

【问题讨论】:

  • 你试过什么?向我们展示您的最佳尝试(代码)。
  • 我们在这里提供帮助,但不是为您解决问题。向我们展示您的代码。到目前为止,您尝试了什么?
  • 我是这个领域的新手并且理解你的评论:我尝试了一堆我在网上找到的例子,但我想我下次需要做更广泛的研究并编写更多自己的代码。另外,我没有找到stackoverflow.com/questions/5269188/… :s

标签: php arrays


【解决方案1】:

你可以遍历你的数组并对结果求和,检查Demo

$result = [];
foreach ($array as $v) {
    $id_space = $v->id_space;
    if (isset($result[$id_space]) === true) {
        $result[$id_space]->running_meters += $v->running_meters;
    } else {
        $result[$id_space] = new stdClass();
        $result[$id_space]->id_space = $id_space;
        $result[$id_space]->running_meters = $v->running_meters;
    }
}

$result = array_values($result);
var_dump($result);

【讨论】:

  • 太好了,非常感谢,我会去的。
猜你喜欢
  • 2018-09-22
  • 2017-11-12
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2019-06-03
相关资源
最近更新 更多