【问题标题】:PHP all combinations into arrayPHP所有组合成数组
【发布时间】:2013-03-01 00:07:01
【问题描述】:

假设我有两个变量,字符串转换为数组

$VAR_1 = '1-1:2-1';
$VAR_1 = Explode(':', $VAR_1);

$VAR_2 = '3-1:4-1:2-2:2-3:2-4';
$VAR_2 = Explode(':', $VAR_2);

现在我想将 VAR_1 和 VAR_2 的“所有”组合混合到一个新数组 $COMB 中

但至少 1 个,或者 VAR_1 的两个变量必须在新数组中,并且组合字符串必须由 5 个变量组成。

我需要所有组合,也是重复的,但顺序不同。

如何做到这一点?

场景:扑克游戏(VAR_1 = 玩家牌(颜色 - 数字)VAR_2 = 桌牌)

【问题讨论】:

  • 你想要的输出数组是什么?
  • 类似:COMB[] = '1-1:3-1:4-1:5-1:6-1' 如果选择了 VAR_1 中的一个并且选择了 VAR_2 中的 4
  • Function names are case-insensitive, though it is usually good form to call functions as they appear in their declaration。你应该坚持下去。
  • explode() 正确,Explode() 不正确?为什么它总是有效
  • explode() 是一个函数,但其​​他程序员会认为 Explode 是一个类,因为它以大写字母开头,它不会影响功能但会混淆其他人

标签: php


【解决方案1】:
 {
 $array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
 $array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
 $result = $array1 + $array2;
 var_dump($result);
 }

【讨论】:

    【解决方案2】:

    首先,您需要创建一个包含所有 7 个变量的数组,使用简单

    $arr3 = $arr1 + $arr2;
    

    $arr3 = array_merge($arr1, $arr2);
    

    然后,您需要选择 5 元素组,这意味着将始终跳过 2 个元素,这 2 个元素将具有索引 $i 和 $j,使得 2 个嵌套 for 循环成为此问题的出色解决方案,这里有一个示例:

    $array = array("1-2", "1-5", "1-8", "3-4", "2-1", "2-2", "1-6");
    $result = array(); //not sure if this line is nesseserly, but better be sure
    for ($i = 0; $i < 7; $i++) {
        for ($j = $i + 1; $j <= 7; $j++) {
            $buffer = array(); //this is nesseserly
            for ($k = 0; $k < 7; $k++) {
                if ($k == $i || $k == $j) {
                    continue;
                }
                $buffer[] = $array[$k]; //add to end
            }
            $result[] = $buffer; //add to end
        }
    }
    var_dump($result);
    

    这对我有用,经过测试。

    【讨论】:

      【解决方案3】:

      使用 array_merge()

      http://php.net/manual/en/function.array-merge.php

      $a = array("a", "b", "c");
      $b = array("g", "a", "f");
      $c = array_merge($a, $b);
      var_dump($c); //array("a", "b", "c", "g", "a", "f");
      

      【讨论】:

      • 他希望组合不合并数组
      猜你喜欢
      • 2013-07-30
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多