PHP array_slice() - 确保最后一个和最后一个元素被选中
PHP array_slice() - ensuring the last the first and last elements are selected
我想知道是否有人有聪明的方法来确保在 array_slice 操作期间选择数组的最后一个元素。第一个元素很容易选择,但如果应用了偏移量,则无法确定选择了最后一个元素,除非在循环后添加额外的 if else
逻辑。
比如这里的基础问题就是没有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]
需要以其他方式包含。
相关性是确保仅选择一定数量的 'waypoints' 以保持在限制范围内,但第一个和最后一个元素包含在该限制范围内。
我确定还有其他方法可以计算模数,但这行得通:
for ($i=0; $i < count($latlong); $i+=$off){
$data[] = array_slice($latlong, $i,1);
$last = $i;
}
var_dump(array_slice($latlong, $last+1));
如果我向数组中添加 2 个其他元素,它将为空。另外,您可能想看一下 python 的 php 变体 xrange()。
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));
对于您的示例,此代码有效:
<?php
$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){
if(count($latlong) - $i <= $off){
$last_element = end($latlong);
}
print_r( array_slice($latlong, $i,1));
}
print_r($last_element);
?>
if 语句验证您是否在代码中设置了任何偏移量,$last_element 变量总是包含数组的最后一个元素。
我想知道是否有人有聪明的方法来确保在 array_slice 操作期间选择数组的最后一个元素。第一个元素很容易选择,但如果应用了偏移量,则无法确定选择了最后一个元素,除非在循环后添加额外的 if else
逻辑。
比如这里的基础问题就是没有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]
需要以其他方式包含。
相关性是确保仅选择一定数量的 'waypoints' 以保持在限制范围内,但第一个和最后一个元素包含在该限制范围内。
我确定还有其他方法可以计算模数,但这行得通:
for ($i=0; $i < count($latlong); $i+=$off){
$data[] = array_slice($latlong, $i,1);
$last = $i;
}
var_dump(array_slice($latlong, $last+1));
如果我向数组中添加 2 个其他元素,它将为空。另外,您可能想看一下 python 的 php 变体 xrange()。
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));
对于您的示例,此代码有效:
<?php
$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){
if(count($latlong) - $i <= $off){
$last_element = end($latlong);
}
print_r( array_slice($latlong, $i,1));
}
print_r($last_element);
?>
if 语句验证您是否在代码中设置了任何偏移量,$last_element 变量总是包含数组的最后一个元素。