如何相互置换两个数组键
how to permute two array keys with each other
如何将一个数组中的每个值与另一个数组组合以创建一个结构,该结构将成为 table 的来源。
例如,我们有数组:
$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'],
},
);
但我的问题是是否可以将算法泛化到任意高维度。
就算法而言,我会说自己尝试一些东西。
也就是说,我建议从嵌套的 foreach 循环开始:
$result = array();
foreach ($a['animal'] as $val) {
$result[$val] = array();
foreach ($a['food'] as $val2) {
$result[$val][$val2] = array('animal' => $val, 'food' => $val2);
}
}
然后可能将此代码扩展为 modular/customizable。
如何将一个数组中的每个值与另一个数组组合以创建一个结构,该结构将成为 table 的来源。 例如,我们有数组:
$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'],
},
);
但我的问题是是否可以将算法泛化到任意高维度。
就算法而言,我会说自己尝试一些东西。
也就是说,我建议从嵌套的 foreach 循环开始:
$result = array();
foreach ($a['animal'] as $val) {
$result[$val] = array();
foreach ($a['food'] as $val2) {
$result[$val][$val2] = array('animal' => $val, 'food' => $val2);
}
}
然后可能将此代码扩展为 modular/customizable。