Ho una funzione che dovrebbe suddividere il mio array in array più piccoli, distribuiti equamente, tuttavia sembra che stia duplicando i miei dati lungo la strada. Se qualcuno mi può aiutare sarebbe fantastico.php split array in array pari più piccoli
Ecco la matrice originale:
Array
(
[0] => stdClass Object
(
[bid] => 42
[name] => Ray White Mordialloc
[imageurl] => sp_raywhite.gif
[clickurl] => http://www.raywhite.com/
)
[1] => stdClass Object
(
[bid] => 48
[name] => Beachside Osteo
[imageurl] => sp_beachside.gif
[clickurl] => http://www.beachsideosteo.com.au/
)
[2] => stdClass Object
(
[bid] => 53
[name] => Carmotive
[imageurl] => sp_carmotive.jpg
[clickurl] => http://www.carmotive.com.au/
)
[3] => stdClass Object
(
[bid] => 51
[name] => Richmond and Bennison
[imageurl] => sp_richmond.jpg
[clickurl] => http://www.richbenn.com.au/
)
[4] => stdClass Object
(
[bid] => 50
[name] => Letec
[imageurl] => sp_letec.jpg
[clickurl] => www.letec.biz
)
[5] => stdClass Object
(
[bid] => 39
[name] => Main Street Mordialloc
[imageurl] => main street cafe.jpg
[clickurl] =>
)
[6] => stdClass Object
(
[bid] => 40
[name] => Ripponlea Mitsubishi
[imageurl] => sp_mitsubishi.gif
[clickurl] =>
)
[7] => stdClass Object
(
[bid] => 34
[name] => Adrianos Pizza & Pasta
[imageurl] => sp_adrian.gif
[clickurl] =>
)
[8] => stdClass Object
(
[bid] => 59
[name] => Pure Sport
[imageurl] => sp_psport.jpg
[clickurl] => http://www.puresport.com.au/
)
[9] => stdClass Object
(
[bid] => 33
[name] => Two Brothers
[imageurl] => sp_2brothers.gif
[clickurl] => http://www.2brothers.com.au/
)
[10] => stdClass Object
(
[bid] => 52
[name] => Mordialloc Travel and Cruise
[imageurl] => sp_morditravel.jpg
[clickurl] => http://www.yellowpages.com.au/vic/mordialloc/mordialloc-travel-cruise-13492525-listing.html
)
[11] => stdClass Object
(
[bid] => 57
[name] => Southern Suburbs Physiotherapy Centre
[imageurl] => sp_sspc.jpg
[clickurl] => http://www.sspc.com.au
)
[12] => stdClass Object
(
[bid] => 54
[name] => PPM Builders
[imageurl] => sp_ppm.jpg
[clickurl] => http://www.hotfrog.com.au/Companies/P-P-M-Builders
)
[13] => stdClass Object
(
[bid] => 36
[name] => Big River
[imageurl] => sp_bigriver.gif
[clickurl] =>
)
[14] => stdClass Object
(
[bid] => 35
[name] => Bendigo Bank Parkdale/Mentone East
[imageurl] => sp_bendigo.gif
[clickurl] => http://www.bendigobank.com.au
)
[15] => stdClass Object
(
[bid] => 56
[name] => Logical Services
[imageurl] => sp_logical.jpg
[clickurl] =>
)
[16] => stdClass Object
(
[bid] => 58
[name] => Dicount Lollie Shop
[imageurl] => new dls logo.jpg
[clickurl] =>
)
[17] => stdClass Object
(
[bid] => 46
[name] => Patterson Securities
[imageurl] => cmyk patersons_withtag.jpg
[clickurl] =>
)
[18] => stdClass Object
(
[bid] => 44
[name] => Mordialloc Personal Trainers
[imageurl] => sp_mordipt.gif
[clickurl] => #
)
[19] => stdClass Object
(
[bid] => 37
[name] => Mordialloc Cellar Door
[imageurl] => sp_cellardoor.gif
[clickurl] =>
)
[20] => stdClass Object
(
[bid] => 41
[name] => Print House Graphics
[imageurl] => sp_printhouse.gif
[clickurl] =>
)
[21] => stdClass Object
(
[bid] => 55
[name] => 360South
[imageurl] => sp_360.jpg
[clickurl] =>
)
[22] => stdClass Object
(
[bid] => 43
[name] => Systema
[imageurl] => sp_systema.gif
[clickurl] =>
)
[23] => stdClass Object
(
[bid] => 38
[name] => Lowe Financial Group
[imageurl] => sp_lowe.gif
[clickurl] => http://lowefinancial.com/
)
[24] => stdClass Object
(
[bid] => 49
[name] => Kim Reed Conveyancing
[imageurl] => sp_kimreed.jpg
[clickurl] =>
)
[25] => stdClass Object
(
[bid] => 45
[name] => Mordialloc Sporting Club
[imageurl] => msc logo.jpg
[clickurl] =>
)
)
Ecco la funzione PHP che è destinata a dividere la matrice:
function split_array($array, $slices) {
$perGroup = floor(count($array)/$slices);
$Remainder = count($array) % $slices ;
$slicesArray = array();
$i = 0;
while($i < $slices) {
$slicesArray[$i] = array_slice($array, $i * $perGroup, $perGroup);
$i++;
}
if ($i == $slices) {
if ($Remainder > 0 && $Remainder < $slices) {
$z = $i * $perGroup +1;
$x = 0;
while ($x < $Remainder) {
$slicesRemainderArray = array_slice($array, $z, $Remainder+$x);
$remainderItems = array_merge($slicesArray[$x],$slicesRemainderArray);
$slicesArray[$x] = $remainderItems;
$x++;
$z++;
}
}
};
return $slicesArray;
}
Ecco il risultato della scissione (si duplica in qualche modo elementi dalla matrice originale negli array più piccoli):
Array
(
[0] => Array
(
[0] => stdClass Object
(
[bid] => 57
[name] => Southern Suburbs Physiotherapy Centre
[imageurl] => sp_sspc.jpg
[clickurl] => http://www.sspc.com.au
)
[1] => stdClass Object
(
[bid] => 35
[name] => Bendigo Bank Parkdale/Mentone East
[imageurl] => sp_bendigo.gif
[clickurl] => http://www.bendigobank.com.au
)
[2] => stdClass Object
(
[bid] => 38
[name] => Lowe Financial Group
[imageurl] => sp_lowe.gif
[clickurl] => http://lowefinancial.com/
)
[3] => stdClass Object
(
[bid] => 39
[name] => Main Street Mordialloc
[imageurl] => main street cafe.jpg
[clickurl] =>
)
[4] => stdClass Object
(
[bid] => 48
[name] => Beachside Osteo
[imageurl] => sp_beachside.gif
[clickurl] => http://www.beachsideosteo.com.au/
)
[5] => stdClass Object
(
[bid] => 33
[name] => Two Brothers
[imageurl] => sp_2brothers.gif
[clickurl] => http://www.2brothers.com.au/
)
[6] => stdClass Object
(
[bid] => 40
[name] => Ripponlea Mitsubishi
[imageurl] => sp_mitsubishi.gif
[clickurl] =>
)
)
[1] => Array
(
[0] => stdClass Object
(
[bid] => 44
[name] => Mordialloc Personal Trainers
[imageurl] => sp_mordipt.gif
[clickurl] => #
)
[1] => stdClass Object
(
[bid] => 41
[name] => Print House Graphics
[imageurl] => sp_printhouse.gif
[clickurl] =>
)
[2] => stdClass Object
(
[bid] => 39
[name] => Main Street Mordialloc
[imageurl] => main street cafe.jpg
[clickurl] =>
)
[3] => stdClass Object
(
[bid] => 48
[name] => Beachside Osteo
[imageurl] => sp_beachside.gif
[clickurl] => http://www.beachsideosteo.com.au/
)
[4] => stdClass Object
(
[bid] => 33
[name] => Two Brothers
[imageurl] => sp_2brothers.gif
[clickurl] => http://www.2brothers.com.au/
)
[5] => stdClass Object
(
[bid] => 40
[name] => Ripponlea Mitsubishi
[imageurl] => sp_mitsubishi.gif
[clickurl] =>
)
)
[2] => Array
(
[0] => stdClass Object
(
[bid] => 56
[name] => Logical Services
[imageurl] => sp_logical.jpg
[clickurl] =>
)
[1] => stdClass Object
(
[bid] => 43
[name] => Systema
[imageurl] => sp_systema.gif
[clickurl] =>
)
[2] => stdClass Object
(
[bid] => 48
[name] => Beachside Osteo
[imageurl] => sp_beachside.gif
[clickurl] => http://www.beachsideosteo.com.au/
)
[3] => stdClass Object
(
[bid] => 33
[name] => Two Brothers
[imageurl] => sp_2brothers.gif
[clickurl] => http://www.2brothers.com.au/
)
[4] => stdClass Object
(
[bid] => 40
[name] => Ripponlea Mitsubishi
[imageurl] => sp_mitsubishi.gif
[clickurl] =>
)
)
[3] => Array
(
[0] => stdClass Object
(
[bid] => 53
[name] => Carmotive
[imageurl] => sp_carmotive.jpg
[clickurl] => http://www.carmotive.com.au/
)
[1] => stdClass Object
(
[bid] => 45
[name] => Mordialloc Sporting Club
[imageurl] => msc logo.jpg
[clickurl] =>
)
[2] => stdClass Object
(
[bid] => 33
[name] => Two Brothers
[imageurl] => sp_2brothers.gif
[clickurl] => http://www.2brothers.com.au/
)
[3] => stdClass Object
(
[bid] => 40
[name] => Ripponlea Mitsubishi
[imageurl] => sp_mitsubishi.gif
[clickurl] =>
)
)
[4] => Array
(
[0] => stdClass Object
(
[bid] => 59
[name] => Pure Sport
[imageurl] => sp_psport.jpg
[clickurl] => http://www.puresport.com.au/
)
[1] => stdClass Object
(
[bid] => 54
[name] => PPM Builders
[imageurl] => sp_ppm.jpg
[clickurl] => http://www.hotfrog.com.au/Companies/P-P-M-Builders
)
[2] => stdClass Object
(
[bid] => 40
[name] => Ripponlea Mitsubishi
[imageurl] => sp_mitsubishi.gif
[clickurl] =>
)
)
[5] => Array
(
[0] => stdClass Object
(
[bid] => 46
[name] => Patterson Securities
[imageurl] => cmyk patersons_withtag.jpg
[clickurl] =>
)
[1] => stdClass Object
(
[bid] => 34
[name] => Adriano's Pizza & Pasta
[imageurl] => sp_adrian.gif
[clickurl] => #
)
)
[6] => Array
(
[0] => stdClass Object
(
[bid] => 55
[name] => 360South
[imageurl] => sp_360.jpg
[clickurl] =>
)
[1] => stdClass Object
(
[bid] => 37
[name] => Mordialloc Cellar Door
[imageurl] => sp_cellardoor.gif
[clickurl] =>
)
)
[7] => Array
(
[0] => stdClass Object
(
[bid] => 49
[name] => Kim Reed Conveyancing
[imageurl] => sp_kimreed.jpg
[clickurl] =>
)
[1] => stdClass Object
(
[bid] => 58
[name] => Dicount Lollie Shop
[imageurl] => new dls logo.jpg
[clickurl] =>
)
)
[8] => Array
(
[0] => stdClass Object
(
[bid] => 51
[name] => Richmond and Bennison
[imageurl] => sp_richmond.jpg
[clickurl] => http://www.richbenn.com.au/
)
[1] => stdClass Object
(
[bid] => 52
[name] => Mordialloc Travel and Cruise
[imageurl] => sp_morditravel.jpg
[clickurl] => http://www.yellowpages.com.au/vic/mordialloc/mordialloc-travel-cruise-13492525-listing.html
)
)
[9] => Array
(
[0] => stdClass Object
(
[bid] => 50
[name] => Letec
[imageurl] => sp_letec.jpg
[clickurl] => www.letec.biz
)
[1] => stdClass Object
(
[bid] => 36
[name] => Big River
[imageurl] => sp_bigriver.gif
[clickurl] =>
)
)
)
^^ Come potete vedere ci sono dupl icate dall'array originale negli array più piccoli appena creati.
Ho pensato di rimuovere i duplicati utilizzando una funzione di rimozione duplicata multidimensionale ma che non ha funzionato. Sto indovinando che il mio problema è nella funzione array_split.
Qualche suggerimento? :)
Grazie per questo, anche se sto ricevendo questo errore: Errore di analisi: errore di sintassi, T_FUNCTION inatteso testing.php on line 53 Questa riga è $ redfunc = function ($ partial, $ elem) use ($ pergroup) { – SoulieBaby
non stai usando PHP 5.3.x Puoi sostituirlo con una funzione normale e passare il suo nome come stringa a array_reduce. – Artefacto
proverò e vedrò come vado :) – SoulieBaby