gpt4 book ai didi

php - 如何在数组中查找和计算相同的值,然后插入一个带有 : ‘count: (int)’ via PHP? 的节点

转载 作者:行者123 更新时间:2023-12-04 08:07:20 24 4
gpt4 key购买 nike

我有一个动态的纬度和经度数组,但我需要插入相同值的计数,同时通过 PHP 消除重复项。所以这...

Array (
[0] => Array (
[lat] => 40.7587979
[lon] => -73.9623427
)
[1] => Array (
[lat] => 39.8587028
[lon] => -84.277025
)
[2] => Array (
[lat] => 37.7647993
[lon] => -122.4629897
)
[3] => Array (
[lat] => 37.7647993
[lon] => -122.4629897
)
[4] => Array (
[lat] => 33.5125302
[lon] => -117.6860507
)
[5] => Array (
[lat] => 39.8587028
[lon] => -84.277025
)
)
……变成这个……
Array (
[0] => Array (
[lat] => 40.7587979
[lon] => -73.9623427
[count] => 1
)
[1] => Array (
[lat] => 39.8587028
[lon] => -84.277025
[count] => 2
)
[2] => Array (
[lat] => 37.7647993
[lon] => -122.4629897
[count] => 2
)
[3] => Array (
[lat] => 33.5125302
[lon] => -117.6860507
[count] => 1
)
)
我理解使用 array_count_values(),但这不会在每个节点中插入新的计数值。用例将是一个热图,其中根据相同坐标的数量对 map 进行加权。

最佳答案

有几种方法可以解决这个问题,包括循环和条件,但是 array_count_values()适用于大型集合。这是一个捆绑 array_count_values() 的循环与 array_map()到:

  • array_map()转换 lat,lng将原始数组的数组对转换为字符串数组lat|lng
  • array_count_values()计算那些 lat|lng 的唯一值字符串并将它们作为数组键返回,指向作为值的计数
  • foreach循环迭代 lat|lng 的数组键控计数并将它们拆分回输出子数组。
  • // To hold the new array
    $out = [];

    // Outer loop over the result from array_count_values()
    foreach (array_count_values(array_map(function($l) {
    // Map function combines lat|lng
    return implode("|", $l);
    // The rest of the loop syntax...
    }, $original_array)) as $pair => $count) {

    // Split the counted array key back to individual lat,lng
    list($lat, $lng) = explode("|", $pair);

    // Put it all onto the output array
    $out[] = [
    'lat' => $lat,
    'lng' => $lng,
    'count' => $count
    ];
    }

    print_r($out);
    打印:
    Array
    (
    [0] => Array
    (
    [lat] => 40.7587979
    [lng] => -73.9623427
    [count] => 1
    )

    [1] => Array
    (
    [lat] => 39.8587028
    [lng] => -84.277025
    [count] => 2
    )

    [2] => Array
    (
    [lat] => 37.7647993
    [lng] => -122.4629897
    [count] => 2
    )

    [3] => Array
    (
    [lat] => 33.5125302
    [lng] => -117.6860507
    [count] => 1
    )

    )
    注意:与示例输出的一个不同之处在于,您在丢弃重复项后保留了原始外部数组键 0,1,2,4 .此输出是一个新数组,按顺序对所有外部键进行编号 0,1,2,3 .如果您确实需要保留原始数组键,则需要做更多工作。
    Working demonstration

    关于php - 如何在数组中查找和计算相同的值,然后插入一个带有 : ‘count: (int)’ via PHP? 的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66165832/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com