从特定索引的开始计算数组

时间:2012-01-25 13:07:15

标签: php arrays

PHP中是否有一个函数可以从数组的特定索引开始计数?

示例:

$array = array(1, 2, 3, 4, 'string', 5, 6, 7);

var_dump(count($array)); // 8 items

功能与我需要的相似:

$array = array(1, 2, 3, 4, 'string', 5, 6, 7);

var_dump(countFromIndex($array, 2)); // 6 items (started from 3)

4 个答案:

答案 0 :(得分:1)

不,你需要写一个。 最简单的(不是最好的,就是我能从头顶拉出来的)方法就像是

function countFrom($array, $indexFrom) {
$counter = 0;
$start = false;
foreach ($array as $k=>$v) {
    if ($k == $indexFrom) {
        $start = true;
    }
    if ($start) {
        $counter ++;
    }
}
return $counter;
}

或者,可能记忆力较低:

function countFrom($array, $indexFrom) {
$start = false;
$counter = 0; // experiment to see if this should be 0 or 1
foreach ($array as $k=>$v) {
    if ($k == $indexFrom) {
        $new = array_splice($array, $counter);
        return count($new);
    }
    $counter ++;
}

答案 1 :(得分:0)

如果您尝试从索引编号2开始获取项目数,则只需使用count($array) - 2

答案 2 :(得分:0)

这样的事情:

function countFromIndex($array, $index)
{
    $values = array_values($array);
    $count = count($values);
    $search = 0;
    for($i=0; $i<$count; $i++)
    {
        $search++;
        if($values[$i] === $index) break;
    }
    return $count-$search;
}

$array = array(1, 2, 3, 4, 'string', 5, 6, 7);
var_dump(countFromIndex($array, 2)); // 6 items (started from 3)
var_dump(countFromIndex($array, 'string')); // 3 items (started from 5)
var_dump(countFromIndex($array, 7)); // 0 items (started from ?)

答案 3 :(得分:-1)

$total = count($array);
$count = 0;

for($i = 2; $i < $total; $i++)
{
    $count++;
}

更改$i = 2以设置起点。