Php 如何合并数组值?
我有来自输入字段的数组,现在我想要的是生成各种值的组合,以保存在数据库colunm中Php 如何合并数组值?,php,mysql,arrays,Php,Mysql,Arrays,我有来自输入字段的数组,现在我想要的是生成各种值的组合,以保存在数据库colunm中 -------------------------------- id | value -------------------------------- 1 8,12,7,11 2 8,15,7,11 3 9,12,7,11 4 9,15,7,11 5 13,12,7,11 6 13,15,7,11 $first=$this->input->post('product_variant')
--------------------------------
id | value
--------------------------------
1 8,12,7,11
2 8,15,7,11
3 9,12,7,11
4 9,15,7,11
5 13,12,7,11
6 13,15,7,11
$first=$this->input->post('product_variant')
现在我要生成的组合如下:
8,12,7,11
8,15,7,11
9,12,7,11
9,15,7,11
13,12,7,11
13,15,7,11
如果您使用multiple for循环,它将帮助您生成该类型的组合 例如:
for(int i=0;i<your array length;i++){
for(int j=0;j<i;j++){
//your code
}
}
这是笛卡尔积。你可以使用这个函数
function cartesian($arr,$str = array()){
$first = array_shift($arr);
if(count($str) > 1) {
foreach ($str as $k => $val) {
foreach ($first as $key => $value) {
$str2[] = $val.','.$value;
}
}
}else{
foreach ($first as $key => $value) {
$str2[] = $value;
}
}
if(count($arr) > 0){
$str2 = cartesian($arr,$str2);
}
return $str2;
}
希望可以帮助您。您只需要列出每种变体吗?您的问题不清楚。那么请你解释一下你想在什么基础上合并你的阵列,比如:颜色:红色,蓝色和大小:s,m然后它应该生成4个组合红s,红m,蓝s,蓝m:如果颜色:红,蓝,粉红和大小:s,m那么它应该生成6个:红s,红m,蓝s,蓝m,粉红s,粉红m。希望它现在清楚了。这将帮助你:谢谢。但是你能帮我做一些细节来得到这些组合吗
function combinations($arrays, $i = 0) {
if (!isset($arrays[$i])) {
return array();
}
if ($i == count($arrays) - 1) {
return $arrays[$i];
}
// get combinations from subsequent arrays
$tmp = combinations($arrays, $i + 1);
$result = array();
// concat each array from tmp with each element from $arrays[$i]
foreach ($arrays[$i] as $v) {
foreach ($tmp as $t) {
$result[] = is_array($t) ?
array_merge(array($v), $t) :
array($v, $t);
}
}
return $result;
}
function cartesian($arr,$str = array()){
$first = array_shift($arr);
if(count($str) > 1) {
foreach ($str as $k => $val) {
foreach ($first as $key => $value) {
$str2[] = $val.','.$value;
}
}
}else{
foreach ($first as $key => $value) {
$str2[] = $value;
}
}
if(count($arr) > 0){
$str2 = cartesian($arr,$str2);
}
return $str2;
}