限制PHP中数组的长度


Limit Length of Array in PHP

是否可以像MySQL中的LIMIT那样限制数组中的成员数量?例如,如果我有$arrayx成员,并且我只想返回其中的前50个,我该如何做到这一点?

我应该使用count()array_slice()的组合,还是有更简单的方法?

使用array_slice就可以了。

array_slice($array, 0, 50); // same as offset 0 limit 50 in sql

使用SPL(更好的内存占用):

// Using fixed array
$fixedArray = SplFixedArray::fromArray($array);
$fixedArray->setSize(min(50, count($array));
// Using iterator
$limitIterator = new LimitIterator(new ArrayIterator($array), 0, 50);

确保$array只有50长:

array_splice($array, 50);

或者返回第一个50:

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

你预计它会更容易吗?)

只有数组本身,无法限制其中的元素数量。

你可以用循环来实现你自己的方法,获得数组的前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;
}

EDIT:此函数提供与使用array_slice($array, $offset, $limit, true);相同的结果;第四个参数保留关联数组中的关键点。