11

LIMITMySQLのように、配列内のメンバーの数を制限することは可能ですか?たとえば、メンバーと$array一緒にいxて、最初の50人だけを返したい場合、どうすればよいですか?

count()との組み合わせを使用する必要array_slice()がありますか、それとももっと簡単な方法がありますか?

4

4 に答える 4

29

array_sliceを使用するとうまくいくはずです。

array_slice($array, 0, 50); // same as offset 0 limit 50 in sql
于 2012-07-27T14:50:35.420 に答える
6

SPL(より良いメモリフットプリント)を使用する場合:

// Using fixed array
$fixedArray = SplFixedArray::fromArray($array);
$fixedArray->setSize(min(50, count($array));

// Using iterator
$limitIterator = new LimitIterator(new ArrayIterator($array), 0, 50);
于 2012-07-27T14:56:19.413 に答える
1

$array長さが50だけであることを確認してください。

array_splice($array, 50);

または、最初の50を返します。

$new_array = array_slice($array, 0, 50);

どれくらい簡単になると思いますか?;)

于 2012-07-27T14:52:00.743 に答える
0

配列自体では、その中の要素の数を制限する方法はありません。

配列の最初の50要素(または特定のオフセットの後の最初の50要素)をループで取得する独自の方法を実装できます(連想配列でarray_splice()は機能しないため、ループをお勧めします)。

function limit($array, $limit, $offset = 0) {
    $return = array();
    $end = ($limit + $offset);
    $count = 0;
    foreach ($array as $key => $val) {
        if ($count++ > $offset) {
            $return[$key] = $val;
        }
        if ($count == $end) break;
    }
    return $return;
}

編集array_slice($array, $offset, $limit, true);:この関数は、 ;を使用した場合と同じ結果を提供します。4番目のパラメーターは、連想配列のキーを保持します。

于 2012-07-27T14:52:21.347 に答える