RomikChef
Guest
У меня будет масив но у него каждый элемент МАССИВ!!!!
Дизель, я все понимаю, но нельзя же до ТАКОЙ степени!
Дизель, я все понимаю, но нельзя же до ТАКОЙ степени!
<?php
//Исходные масивы
$arr1=array('1','2','3','4','5');
$arr2=array('1','2');
$arr3=array('1','2','3','4');
//складываем в один
$main_array=array($arr1,$arr2,$arr3);
//узнаём их количество
$count_arrays=sizeof($main_array);
$col_var=1;
for ($i=0;$i<$count_arrays;$i++)
{
//вычисляем количество возможных вариантов
$col_var*=sizeof($main_array[$i]);
//счетчик для каждого из масивов. max- максимальное значение счётчика
$counter[]=array('counter'=>0,'max'=>sizeof($main_array[$i]));
}
$k=0;
$step=0;
//пока все варианты не перебрали
while ($step<$col_var)
{
//по порядку для каждого масива
for ($i=0;$i<$count_arrays;$i++)
{
//если максимальное значение
if ($counter[$i]['counter']==$counter[$i]['max']-1)
{
//то сбрасываем в ноль
$counter[$i]['counter']=0;
}
else //иначе
{
//увеличиваем
$counter[$i]['counter']++;
//и складываем в масив новую комбинацию
for ($j=0;$j<$count_arrays;$j++)
{
print '[';
print $res_array[$step][]=$main_array[$j][$counter[$j]['counter']];
print ']';
}
print '<br>';
}
//следуюшяя комбинация
$step++;
} // следуюший масив
} //while
?>
Это не матрица. Все масивы разной длинны.Ребята, да это ж МАТРИЦА!!!
Большое спасибо!Кажется получилось:
PHP:<?php //Исходные масивы $arr1=array('1','2','3','4','5'); $arr2=array('1','2'); $arr3=array('1','2','3','4'); //складываем в один $main_array=array($arr1,$arr2,$arr3); //узнаём их количество $count_arrays=sizeof($main_array); $col_var=1; for ($i=0;$i<$count_arrays;$i++) { //вычисляем количество возможных вариантов $col_var*=sizeof($main_array[$i]); //счетчик для каждого из масивов. max- максимальное значение счётчика $counter[]=array('counter'=>0,'max'=>sizeof($main_array[$i])); } $k=0; $step=0; //пока все варианты не перебрали while ($step<$col_var) { //по порядку для каждого масива for ($i=0;$i<$count_arrays;$i++) { //если максимальное значение if ($counter[$i]['counter']==$counter[$i]['max']-1) { //то сбрасываем в ноль $counter[$i]['counter']=0; } else //иначе { //увеличиваем $counter[$i]['counter']++; //и складываем в масив новую комбинацию for ($j=0;$j<$count_arrays;$j++) { print '['; print $res_array[$step][]=$main_array[$j][$counter[$j]['counter']]; print ']'; } print '<br>'; } //следуюшяя комбинация $step++; } // следуюший масив } //while ?>
for ($j=0;$j<$count_arrays;$j++)
{
print '[';
print $res_array[$step][]=$main_array[$j][$counter[$j]['counter']];
print ']';
}
function generateVariation($A, $i = 0)
{
$result = array();
if ($i < count($A))
{
$variations = generateVariation($A, $i + 1);
for ($j = 0; $j < count($A[$i]); $j++)
{
if ($variations)
{
foreach ($variations as $variation)
{
$result[] = array_merge(array($A[$i][$j]), $variation);
}
}
else
{
$result[] = array($A[$i][$j]);
}
}
}
return $result;
}
_RVK_, 7 май 2003 - первое сообщение топикаПрошло 8 лет (почти 9)...
function combinations($arrays) {
$result = array(array());
foreach ($arrays as $property => $property_values) {
$tmp = array();
foreach ($result as $result_item) {
foreach ($property_values as $property_value) {
$tmp[] = array_merge($result_item, array($property => $property_value));
}
}
$result = $tmp;
}
return $result;
}
$combinations = combinations(
array(
'a' => array(1),
'b' => array(2,3),
'c' => array(4,5,6),
)
);