将MYSQL结果拆分为4个数组

时间:2009-08-06 04:42:41

标签: php mysql arrays

我有一个mysql查询,它会吐出以下内容:

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/
        )

)

然后可以将该数组拆分为4个数组吗?每个数组中的项目数量相等(尽可能最好),但随着更多信息被放入dbase,它们可以是动态的。所以如果数量不均匀,最后一个数组的数量会减少?

如果这有意义吗?

2 个答案:

答案 0 :(得分:4)

当然可以!以下代码将执行此操作,将结果拆分为您指定的切片数。

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);

编辑:编辑以制作更均匀的切片。

答案 1 :(得分:3)

我认为这有效

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