Разделить результаты MYSQL на 4 массива - PullRequest
1 голос
/ 06 августа 2009

У меня есть запрос 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 массива? С равным количеством элементов в каждом массиве (как можно лучше), но способным быть динамичным, поскольку в базу данных помещается больше информации)

Если это имеет смысл?

Ответы [ 2 ]

4 голосов
/ 06 августа 2009

Конечно, вы можете! Следующий код сделает это, разделив результат на количество указанных кусочков.

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

РЕДАКТИРОВАТЬ: Отредактировано, чтобы сделать более ровные ломтики.

3 голосов
/ 06 августа 2009

Я думаю, что это работает

$splitArray = array_chunk( $sourceArray, ceil( count( $sourceArray ) / 4 ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...