PHP array_slice() - 确保选择最后一个和最后一个元素

时间:2016-08-28 08:34:30

标签: php arrays slice

我想知道是否有人有一种聪明的方法来确保在array_slice操作期间选择数组的最后一个元素。第一个元素很容易被选中,但如果应用了偏移量,除非在循环后添加额外的if else statement逻辑,否则无法确定是否选择了最后一个元素。

例如,这里是没有$latlong[] = [1,2]; $latlong[] = [3,4]; $latlong[] = [5,6]; $latlong[] = [7,8]; $latlong[] = [9,10]; $latlong[] = [11,12]; $latlong[] = [19,110]; $latlong[] = [21,132]; $off = 3; for ($i=0; $i < count($latlong); $i+=$off){ print_r( array_slice($latlong, $i,1)); } 的问题的基础。

[1,2], [7,8], [19,110]

在此处的示例中,您将看到只选择了对[21,132],并且需要以其他方式包含最后一个元素fprintf

相关性是确保只有一定数量的航路点&#39;选择保持在限制范围内,但第一个和最后一个元素包含在该限制内。

2 个答案:

答案 0 :(得分:1)

对于您的示例,此代码有效:

list

if 语句,在这种情况下,验证您是否在代码上设置了任何偏移量, $ last_element 变量始终包含最后一个元素你的阵列。

答案 1 :(得分:0)

我确定还有其他方法可以计算模数,但这样做有效:

for ($i=0; $i < count($latlong); $i+=$off){
    $data[] = array_slice($latlong, $i,1);
    $last = $i;
}

var_dump(array_slice($latlong, $last+1));

如果我向数组添加2个其他元素,它将为空。另外,您可能想看一下pythons xrange()的php变体。

function xrange($start, $end, $step = 1){
  for ($i = $start; $i <= $end; $i += $step){
    yield $i;
  }
}

foreach(xrange(0, count($latlong), $off) as $last){
  $data[] = array_slice($latlong, $last,1);
}

var_dump(array_slice($latlong, $last+1));