【问题标题】:how to permute two array keys with each other如何相互置换两个数组键
【发布时间】:2015-12-02 16:08:19
【问题描述】:

如何将一个数组中的每个值与另一个数组组合以创建一个结构,该结构将成为表的源。 例如,我们有数组:

$a = array(
  'animal' => ['horse', 'donkey', 'elephant'],
  'food' => ['grass', 'hay', 'acorn'],
);

And the effect I need is:

$result = array(
  'horse' = array(
    'grass' => [ 'animal' => 'horse', 'food' => 'grass'],
    'hay' => [ 'animal' => 'horse', 'food' => 'hay'],
    'acorn' => [ 'animal' => 'horse', 'food' => 'acorn'],
  },
  'donkey' = array(
    'grass' => [ 'animal' => 'donkey', 'food' => 'grass'],
    'hay' => [ 'animal' => 'donkey', 'food' => 'hay'],
    'acorn' => [ 'animal' => 'donkey', 'food' => 'acorn'],
  },
  'elephant' = array(
    'grass' => [ 'animal' => 'elephant', 'food' => 'grass'],
    'hay' => [ 'animal' => 'elephant', 'food' => 'hay'],
    'acorn' => [ 'animal' => 'elephant', 'food' => 'acorn'],
  },
);

但我的问题也是是否可以将算法推广到任意高维度。

【问题讨论】:

  • 你试过了吗?向我们展示你的尝试。

标签: php arrays permutation


【解决方案1】:

就算法而言,我想说自己尝试一些事情。

话虽如此,我建议从嵌套的 foreach 循环开始:

$result = array();

foreach ($a['animal'] as $val) {
    $result[$val] = array();
    foreach ($a['food'] as $val2) {
        $result[$val][$val2] = array('animal' => $val, 'food' => $val2);
    }
}

然后可能将此代码扩展为模块化/可定制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多