Hvala ti Pedja, flylord mi je pomogao oko scripte, tako da sada imam ono sto mi treba, a verzija sa demo podacima izgleda ovako:
Code:
<?php
$data = array(
'1' => array(1),
'3' => array(6, 7),
'2' => array(2, 3, 4, 5),
'4' => array(8, 9, 10, 11, 13, 14, 15, 16),
'5' => array(1),
'6' => array(9, 2, 4, 5, 6, 7, 9, 1, 3, 12, 134, 53, 34, 55, 64, 37, 86, 134, 1243),
);
$CTableSort = new CTableSort($data);
$tmpData = $CTableSort->run();
class CTableSort {
private $data;
private $numOfTables;
private $tableKeys;
function __construct($data) {
asort($data);
$data = array_map(array($this, 'arrRandom'), $data);
$this->data = $data;
$this->numOfTables = count($data);
$this->tableKeys = array_keys($this->data);
}
public function run() {
$tmpData = array();
for($i = 0; $i < $this->numOfTables; $i++) {
$tmpData = $this->twoTable($tmpData, $this->data[$this->tableKeys[$i]], $this->tableKeys[$i]);
}
return $tmpData;
}
private function twoTable($tbl1, $tbl2, $tbl2Index) {
$tbl1Index = -1;
$tData = array();
if (count($tbl2) > count($tbl1)) {
$tmp = $tbl1;
$tbl1 = $tbl2;
$tbl2 = $tmp;
$tbl1Index = $tbl2Index;
$tbl2Index = -1;
}
foreach ($tbl1 as $tI=>$d) {
$tData[] = $tbl1Index == -1 ? $d : array('table' => $tbl1Index, 'data' => $d);
if (isset($tbl2[$tI])) {
$tData[] = $tbl2Index == -1 ? $tbl2[$tI] : array('table' => $tbl2Index, 'data' => $tbl2[$tI]);
}
}
return $tData;
}
private function arrRandom($n) {
shuffle($n);
return $n;
}
}
echo '<pre>';
print_r($data);
print_r($tmpData);
?>
Output je sledeci:
Code:
Array
(
[0] => Array
(
[table] => 6
[data] => 5
)
[1] => Array
(
[table] => 5
[data] => 1
)
[2] => Array
(
[table] => 6
[data] => 9
)
[3] => Array
(
[table] => 4
[data] => 16
)
[4] => Array
(
[table] => 6
[data] => 12
)
[5] => Array
(
[table] => 2
[data] => 3
)
[6] => Array
(
[table] => 6
[data] => 53
)
[7] => Array
(
[table] => 4
[data] => 8
)
[8] => Array
(
[table] => 6
[data] => 55
)
[9] => Array
(
[table] => 3
[data] => 7
)
[10] => Array
(
[table] => 6
[data] => 9
)
[11] => Array
(
[table] => 4
[data] => 14
)
[12] => Array
(
[table] => 6
[data] => 3
)
[13] => Array
(
[table] => 2
[data] => 4
)
[14] => Array
(
[table] => 6
[data] => 6
)
[15] => Array
(
[table] => 4
[data] => 9
)
[16] => Array
(
[table] => 6
[data] => 64
)
[17] => Array
(
[table] => 1
[data] => 1
)
[18] => Array
(
[table] => 6
[data] => 4
)
[19] => Array
(
[table] => 4
[data] => 13
)
[20] => Array
(
[table] => 6
[data] => 1243
)
[21] => Array
(
[table] => 2
[data] => 2
)
[22] => Array
(
[table] => 6
[data] => 7
)
[23] => Array
(
[table] => 4
[data] => 11
)
[24] => Array
(
[table] => 6
[data] => 1
)
[25] => Array
(
[table] => 3
[data] => 6
)
[26] => Array
(
[table] => 6
[data] => 86
)
[27] => Array
(
[table] => 4
[data] => 15
)
[28] => Array
(
[table] => 6
[data] => 34
)
[29] => Array
(
[table] => 2
[data] => 5
)
[30] => Array
(
[table] => 6
[data] => 37
)
[31] => Array
(
[table] => 4
[data] => 10
)
[32] => Array
(
[table] => 6
[data] => 134
)
[33] => Array
(
[table] => 6
[data] => 2
)
[34] => Array
(
[table] => 6
[data] => 134
)
)
Posto podataka iz tabele 6 ima najvise, oni se na kraju ipak ponavljaju je ne mogu da budu pomesani sa ostalim podacima, sto u gore navednom nizu moze jasno da se vidi.
I radi bas ono sto sam trazio :)
Ovom prilikom bih se zahvalio i Jovanu Turanjaninu koji mi je poslao njegovo resenje koje je za malo odstupalo od onoga sto sam trazio.
Pozdrav, NenadS!