如何从具有相等间隔的数组中删除数组的元素

时间:2018-04-02 16:29:42

标签: php google-maps

我正在出租车应用程序,骑车完成后我必须绘制我使用谷歌地图apis的地图。假设我的路点是

array($coordinates1,$coordinates2,$coordinates3,$coordinates4,$coordinates5,$coordinates6,.........,$coordinates40)
问题是google map api最多只接受23个路点,为此我必须跳过很多坐标才能通过,这里我的想法是以相等的间隔取消设置数组元素,使路由保持相同。请有人指导我如何从等数间隔的数组中删除许多元素,就像我需要23和总元素是40所以我需要像

array($coordinates1,$coordinates4,$coordinates7,$coordinates9,$coordinates13,$coordinates16,.........,$coordinates39)

1 个答案:

答案 0 :(得分:0)

我找到了一种可能的方法,它有点长,但我得到了确切的要求结果

$required_elements = 23;
$way = array();
for($ini=1;$ini<=78;$ini++)
{
    $way[] = "Co-Ordinated:".$ini;
}
$total_elements = count($way);
list($way1, $way2) = array_chunk($way, ceil(count($way) / 2));
$differrence_element = $total_elements-$required_elements;
$skip_element = ceil($total_elements/$differrence_element);
$output = array();
if($total_elements > $required_elements)
{
    $i=1;$j=0;
    foreach($way as $x)
    {
        if($i == $skip_element)
        {
            $i=1;$j++;
            continue;
        }
        else
        {
            $output[] = $way1[$j];
            if(count($output) >= $required_elements) break;
            $output[] = $way2[$j];
            if(count($output) >= $required_elements) break;
            $i++;$j++;
        }
    }
}
else
{
    $output = $way;
}
$output1 = array();
$output2 = array();
$i=0;
foreach($output as $g)
{
    if($i%2 == 0)
        $output1[] = $g;
    else
        $output2[] = $g;
    $i++;
}

$result = array_merge($output1,$output2);

print_r($way);
echo "<br><br><pre>";
print_r($result);
echo '</pre>';