首页 > 解决方案 > array_slice 错误地计算所有元素

问题描述

function givemeart($offset) {
    global $db;
    global $arrx; // array
    $end = $offset + 12;
    $arr = array_slice($arrx, $offset, $end);
    echo 'offset - ' . $offset . '<br>';
    echo 'end - ' . $end . '<br>';
    echo 'count - ' . count($arr) . '<br>';
}

结果:

offset - 24   
end - 36   
count - 36

count应该12不是吗?

因为从24 (offset)36 (end)12

标签: php

解决方案


的第三个参数array_slice()是切片的长度,不是终点...

数组 array_slice ( 数组 $array , int $offset [, int $length = NULL [, bool $preserve_keys = FALSE ]] )

所以应该...

$arr = array_slice($arrx, $offset, 12);

另外作为旁注,请尽量避免使用global和传递参数。它使测试变得更加容易,也意味着您可以更直接地指示数据在何处传递。


推荐阅读