我正在尝试从数组生成所有组合,并且我有下面给出的数组,
$myArray = array('A','B','C');
生成像
这样的组合的最简单方法是什么Array
(
[0] => Array
(
[0] => A
[1] => B
)
[1] => Array
(
[0] => B
[1] => C
)
[2] => Array
(
[0] => A
[1] => C
)
[3] => Array
(
[0] => A
[1] => B
[2] => C
)
)
提前致谢
答案 0 :(得分:0)
修改强> 下面的代码给出了你想要的结果(不仅仅是对于带有3个元素的数组,比如编辑asnwer之前的代码),但我怀疑它是最好的方法,但是由于没有人提供答案你可以使用它直到你找到一个更好的方式
$myArray = array('A','B','C','D');
$result=array_combinations($myArray);
print_r($result);
function array_combinations($array){
$result=[];
for ($i=0;$i<count($array)-1;$i++) {
$result=array_merge($result,combinations(array_slice($array,$i)));
}
return $result;
}
function combinations($array){
//get all the possible combinations no dublicates
$combinations=[];
$combinations[]=$array;
for($i=1;$i<count($array);$i++){
$tmp=$array;
unset($tmp[$i]);
$tmp=array_values($tmp);//fix the indexes after unset
if(count($tmp)<2){
break;
}
$combinations[]=$tmp;
}
return $combinations;
}
<强>结果
Array
(
[0] => Array
(
[0] => A
[1] => B
[2] => C
[3] => D
)
[1] => Array
(
[0] => A
[1] => C
[2] => D
)
[2] => Array
(
[0] => A
[1] => B
[2] => D
)
[3] => Array
(
[0] => A
[1] => B
[2] => C
)
[4] => Array
(
[0] => B
[1] => C
[2] => D
)
[5] => Array
(
[0] => B
[1] => D
)
[6] => Array
(
[0] => B
[1] => C
)
[7] => Array
(
[0] => C
[1] => D
)
)
您可以找到演示here
答案 1 :(得分:-1)
嗯,最简单的方法是在最后附加一个新的Subarray:
$myarray = array()
$myarray[] = array('A', 'B');
$myarray[] = array('C', 'D');
您可以根据需要使用任意数量的数组维度。但它很快变得难以理解和/或无法管理。考虑使用类来向其他程序员展示您对数据结构的意义。
正如你所说的组合数组,你也可以使用array_merge
它取决于具体情况,哪个选项更好。
答案 2 :(得分:-2)
[{
"created_at": "2017-03-14T01:00:32Z",
"entry_id": 33358,
"field1": "4",
"field2": "4",
"field3": "0"
},
{
"created_at": "2017-03-14T22:54:43Z",
"entry_id": 33398,
"field1": "84",
"field2": "32",
"field3": "0"
}];
问题类似点击How to compare one element from same table to another element已经问过。