2009-08-06 3 views
1

Ich habe eine MySQL-Abfrage, die die folgenden ausspuckt:Split MYSQL Ergebnisse in 4 Arrays

Array 
(
    [0] => stdClass Object 
     (
      [bid] => 18 
      [name] => Cafe Domingo 
      [imageurl] => sp_domingo.gif 
      [clickurl] => # 
     ) 

    [1] => stdClass Object 
     (
      [bid] => 19 
      [name] => Industrial Sweeping Services 
      [imageurl] => sp_iss.gif 
      [clickurl] => http://www.industrialsweeping.com.au/ 
     ) 

    [2] => stdClass Object 
     (
      [bid] => 22 
      [name] => Melbourne Food Distributors 
      [imageurl] => sp_mfd.gif 
      [clickurl] => http://www.campbells.com.au/ 
     ) 

    [3] => stdClass Object 
     (
      [bid] => 26 
      [name] => Toyota Chadstone 
      [imageurl] => sp_toyota.jpg 
      [clickurl] => http://www.chadstonetoyota.com.au/ 
     ) 

    [4] => stdClass Object 
     (
      [bid] => 15 
      [name] => Bay Corporate Catering 
      [imageurl] => sp_baycorp.gif 
      [clickurl] => http://www.baycorporatecatering.com.au/ 
     ) 

    [5] => stdClass Object 
     (
      [bid] => 24 
      [name] => Steve Wilby Transport 
      [imageurl] => sp_swilky.gif 
      [clickurl] => http://www.stevewilby.com.au/ 
     ) 

    [6] => stdClass Object 
     (
      [bid] => 17 
      [name] => Cody Gems and Jewellery 
      [imageurl] => sp_cody.gif 
      [clickurl] => # 
     ) 

    [7] => stdClass Object 
     (
      [bid] => 21 
      [name] => Matthew Davis Australia Pty Ltd 
      [imageurl] => sp_matthewdavis.gif 
      [clickurl] => http://www.matthewdavis.com.au/ 
     ) 

    [8] => stdClass Object 
     (
      [bid] => 25 
      [name] => Tom the Lumberjack 
      [imageurl] => sp_tom.gif 
      [clickurl] => http://www.redwoodgardens.com.au/ 
     ) 

    [9] => stdClass Object 
     (
      [bid] => 16 
      [name] => Bendigo Bank 
      [imageurl] => sp_bb.gif 
      [clickurl] => http://www.bendigobank.com.au/ 
     ) 

    [10] => stdClass Object 
     (
      [bid] => 14 
      [name] => 360South Pty Ltd 
      [imageurl] => sp_360south.gif 
      [clickurl] => http://www.360south.com.au/ 
     ) 

    [11] => stdClass Object 
     (
      [bid] => 23 
      [name] => Redwood Gardens Chinese Restaurant 
      [imageurl] => sp_redwood.gif 
      [clickurl] => http://www.redwoodgardens.com.au/ 
     ) 

) 

Ist es überhaupt möglich, dann dieses Array aufgeteilt in 4 Arrays? Mit einer gleichen Anzahl von Elementen in jedem Array (so gut wie möglich), aber in der Lage dynamisch zu sein, da mehr Informationen in die dbase eingegeben werden. Wenn es also eine ungleichmäßige Menge gibt, hat das letzte Array weniger?

Wenn das Sinn macht?

Antwort

4

Sicher kannst du! Mit dem folgenden Code wird das Ergebnis in die Anzahl der von Ihnen angegebenen Slices aufgeteilt.

function split_array($array, $slices) { 
    $perSlice = floor(count($array)/$slices); 
    $sliceExtra = count($array) % $slices; 

    $slicesArray = array(); 
    $offset = 0; 

    for($i = 0; $i < $slices; $i++) { 
    $extra = (($sliceExtra--) > 0) ? 1 : 0; 
    $slicesArray[] = array_slice($array, $offset, $perSlice + $extra); 
    $offset += $perSlice + $extra; 
    } 

    return $slicesArray; 
} 

$slices = split_array($mysqlResult,4); 

EDIT: Edited mehr sogar Scheiben zu machen.

+0

Die letzte Zeile ist falsch: Es sollte $ Scheiben = split_array ($ mysqlResult, 4) sein; – inakiabt

+0

** @ inakiabt: ** Ich habe meinen Code geändert. Vielen Dank. –

+1

Sie haben meine Antwort gestohlen> :( –

3

Ich denke, das funktioniert

$splitArray = array_chunk($sourceArray, ceil(count($sourceArray)/4));