从数组中获取所有键,其值总计为100

萨拉万

我有一个像这样的数组:

$arr = array(25, 30, 50, 15, 20, 30);

我想获取所有值合计的键,100或者如果合计100不可能,则意味着将获取小于的键100

我需要总共100赞

> $array[2]+$array[4]+$array[5]=100

我的实际需求是要达到100种组合

艾斯比尔

最后我明白了。可能有更好的解决方案,但是它可以工作...

您的问题很复杂。具有6个条目的数组可能有720个唯一排列。条目越多意味着组合越多。因此,我首先获得所有唯一的置换,然后为每种组合计算低于或等于一百的可能性。

$array = array(25, 30, 50, 15, 20, 30);
// 'permutations' function can be found at the bottom of my post
$permutations = permutations(array_keys($array));
$combinations = array();

foreach( $permutations as $keys ) {
    $current = array("sum" => 0, "keys" => array());

    foreach( $keys as $key ) {
        if( $current["sum"] + $array[$key] <= 100 ) {
            $current["sum"] += $array[$key];
            $current["keys"][] = $key;
        }
    }

    // order the keys and create a hash of them
    // to be sure each combination only exists once in the result
    sort($current["keys"]);
    $combinations[md5(join("", $current["keys"]))] = $current;
}

// remove the hashes from array when finished
$combinations = array_values($combinations);

// the final result
print_r($combinations);

对于您的阵列,有11种可能的组合。结果将是:

Array (
    [0] => Array (
        [sum] => 90
        [keys] => Array (
            [0] => 0
            [1] => 1
            [2] => 3
            [3] => 4
        )
    )
    [1] => Array (
        [sum] => 90
        [keys] => Array (
            [0] => 0
            [1] => 2
            [2] => 3
        )
    )
    [2] => Array (
        [sum] => 95
        [keys] => Array (
            [0] => 1
            [1] => 2
            [2] => 3
        )
    )
    [3] => Array (
        [sum] => 95
        [keys] => Array (
            [0] => 0
            [1] => 2
            [2] => 4
        )
    )
    [4] => Array (
        [sum] => 100
        [keys] => Array (
            [0] => 1
            [1] => 2
            [2] => 4
        )
    )
    [5] => Array (
        [sum] => 85
        [keys] => Array (
            [0] => 2
            [1] => 3
            [2] => 4
        )
    )
    [6] => Array (
        [sum] => 100
        [keys] => Array (
            [0] => 0
            [1] => 1
            [2] => 3
            [3] => 5
        )
    )
    [7] => Array (
        [sum] => 95
        [keys] => Array (
            [0] => 2
            [1] => 3
            [2] => 5
        )
    )
    [8] => Array (
        [sum] => 100
        [keys] => Array (
            [0] => 2
            [1] => 4
            [2] => 5
        )
    )
    [9] => Array (
        [sum] => 90
        [keys] => Array (
            [0] => 0
            [1] => 3
            [2] => 4
            [3] => 5
        )
    )
    [10] => Array (
        [sum] => 95
        [keys] => Array (
            [0] => 1
            [1] => 3
            [2] => 4
            [3] => 5
        )
    )
)

使用的permutations功能基于php Cookbook,但更改了您的四个需求。

function permutations($array, $permutations = array()) {
    if( !empty($array) ) {
        $result = array();

        for( $i = count($array) - 1; $i >= 0; --$i ) {
            $newItems = $array;
            $newPerms = $permutations;
            list($values) = array_splice($newItems, $i, 1);
            array_unshift($newPerms, $values);
            $result = array_merge($result, permutations($newItems, $newPerms));
        }
    }
    else {
        $result = array($permutations);
    }

    return $result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用R获取总计为100的所有组合

来自分类Dev

为数组中的所有值设置相同的键

来自分类Dev

获取嵌套数组中特定键的每个值的总计

来自分类Dev

在php数组中搜索值并获取所有键

来自分类Dev

如何从哈希数组中获取键的所有值?

来自分类Dev

如何通过其值Javascript从对象数组中获取键

来自分类Dev

如何提取具有其值的键并添加值以在python字典中打印总计?

来自分类Dev

以紧凑和(或)快速的方式从哈希映射数组中获取特定键的所有值作为数组

来自分类Dev

获取与数组中的特定值匹配的多维数组的所有键

来自分类Dev

使用JSON和JQ中的特定键获取具有所有值的数组

来自分类Dev

从JSON数组中的嵌套对象中获取所有键及其值(不带jQuery)

来自分类Dev

如何在PHP数组中获取键搜索的所有值与另一个键的值?

来自分类Dev

如何在Swift中将所有键和值从NSDictionary获取到单独的String数组中?

来自分类Dev

多维数组:如何获取特定键的所有值?

来自分类Dev

PHP-从深度未知的多维数组中获取具有特定数组键的所有值

来自分类Dev

从对象中获取具有特定值的所有键

来自分类Dev

使用猫鼬为所有文档获取数组中对象的不同值

来自分类Dev

从表中获取与数组中的值匹配的所有值?

来自分类Dev

将键中的值与所有数组项合并

来自分类Dev

如何从指定值的字典中获取所有键?

来自分类Dev

从Swift中的Dictionary获取特定键的所有值

来自分类Dev

打印所有总计为特定值的子集

来自分类Dev

如何获取一列的所有值并计算总计

来自分类Dev

如何从数组及其子数组中获取所有值

来自分类Dev

从多维数组中获取具有特定值的键

来自分类Dev

在 PHP 中获取具有特定键格式的数组值

来自分类Dev

使用JavaScript和/或D3.js在对象数组中获取给定键的所有值

来自分类Dev

如何从多维数组中获取ID作为键并将电子邮件作为其值?

来自分类Dev

如何从数组中的所有索引中获取特定值

Related 相关文章

  1. 1

    使用R获取总计为100的所有组合

  2. 2

    为数组中的所有值设置相同的键

  3. 3

    获取嵌套数组中特定键的每个值的总计

  4. 4

    在php数组中搜索值并获取所有键

  5. 5

    如何从哈希数组中获取键的所有值?

  6. 6

    如何通过其值Javascript从对象数组中获取键

  7. 7

    如何提取具有其值的键并添加值以在python字典中打印总计?

  8. 8

    以紧凑和(或)快速的方式从哈希映射数组中获取特定键的所有值作为数组

  9. 9

    获取与数组中的特定值匹配的多维数组的所有键

  10. 10

    使用JSON和JQ中的特定键获取具有所有值的数组

  11. 11

    从JSON数组中的嵌套对象中获取所有键及其值(不带jQuery)

  12. 12

    如何在PHP数组中获取键搜索的所有值与另一个键的值?

  13. 13

    如何在Swift中将所有键和值从NSDictionary获取到单独的String数组中?

  14. 14

    多维数组:如何获取特定键的所有值?

  15. 15

    PHP-从深度未知的多维数组中获取具有特定数组键的所有值

  16. 16

    从对象中获取具有特定值的所有键

  17. 17

    使用猫鼬为所有文档获取数组中对象的不同值

  18. 18

    从表中获取与数组中的值匹配的所有值?

  19. 19

    将键中的值与所有数组项合并

  20. 20

    如何从指定值的字典中获取所有键?

  21. 21

    从Swift中的Dictionary获取特定键的所有值

  22. 22

    打印所有总计为特定值的子集

  23. 23

    如何获取一列的所有值并计算总计

  24. 24

    如何从数组及其子数组中获取所有值

  25. 25

    从多维数组中获取具有特定值的键

  26. 26

    在 PHP 中获取具有特定键格式的数组值

  27. 27

    使用JavaScript和/或D3.js在对象数组中获取给定键的所有值

  28. 28

    如何从多维数组中获取ID作为键并将电子邮件作为其值?

  29. 29

    如何从数组中的所有索引中获取特定值

热门标签

归档