I have an array with 10 bus stops:
array:10 [▼
0 => array:4 [▼
"id" => 1
"nome" => "Parada 1 - Avenida Liberdade - Aeroporto (Opcional)"
"endereco_completo" => "Avenida Liberdade"
"tempo" => 8
]
1 => array:4 [▼
"id" => 2
"nome" => "Parada 2 - Avenida Leandro Barreto - Aeroporto (Opcional)"
"endereco_completo" => "Avenida Leandro Barreto"
"tempo" => 8
]
2 => array:4 [▼
"id" => 3
"nome" => "Parada 3 - Avenida Leandro Barreto - Aeroporto (Opcional)"
"endereco_completo" => "Avenida Leandro Barreto"
"tempo" => 8
]
3 => array:4 [▼
"id" => 4
"nome" => "Parada 4 - Viaduto Jardim São Paulo - Aeroporto (Opcional)"
"endereco_completo" => "Viaduto Jardim São Paulo"
"tempo" => 8
]
4 => array:4 [▼
"id" => 5
"nome" => "Parada 5 - Viaduto Jardim São Paulo - Aeroporto (Opcional)"
"endereco_completo" => "Viaduto Jardim São Paulo"
"tempo" => 8
]
5 => array:4 [▼
"id" => 6
"nome" => "Parada 6 - Viaduto Jardim São Paulo - Aeroporto (Opcional)"
"endereco_completo" => "Viaduto Jardim São Paulo"
"tempo" => 8
]
6 => array:4 [▼
"id" => 7
"nome" => "Parada 7 - Avenida São Paulo - Aeroporto (Opcional)"
"endereco_completo" => "Avenida São Paulo"
"tempo" => 8
]
7 => array:4 [▼
"id" => 8
"nome" => "Parada 8 - Avenida São Paulo - Aeroporto (Opcional)"
"endereco_completo" => "Avenida São Paulo"
"tempo" => 8
]
8 => array:4 [▼
"id" => 9
"nome" => "Parada 9 - Avenida São Paulo - Aeroporto (Opcional)"
"endereco_completo" => "Avenida São Paulo"
"tempo" => 8
]
9 => array:4 [▼
"id" => 10
"nome" => "Parada 10 - Rua Aníbal Portela - Aeroporto (Opcional)"
"endereco_completo" => "Rua Aníbal Portela"
"tempo" => 8
]
]
I get the request id number of the stop the user is in.
I have created a logic that is as follows:
// se o usuário selecionar uma parada que está ANTES da parada atual
// o fluxo normal da aplicação vai calcular o tempo necessário
// para o ônibus chegar na parada que o usuário está
if ($paradaRequest == $paradaAtual->id_parada ||
$paradaRequest > $paradaAtual->id_parada) {
return view('negocio.resultado-itinerario',
compact('selectPegarParadaAtual'));
// se o usuário selecionar uma parada que está DEPOIS da parada atual
// vai ser necessário percorrer o array novamente e calcular um novo tempo
// para a previsão de chegada deste ônibus na parada na qual o usuário está
} elseif ($paradaRequest < $paradaAtual->id_parada) {
$somaNovoTempo = 0;
for ($i = $paradaRequest; $i < count($arrayParadas); $i++) {
$somaNovoTempo += $arrayParadas[$i]['tempo'];
}
return view('negocio.resultado-itinerario-tempo',
compact('selectPegarParadaAtual', 'somaNovoTempo'));
}
The application is working on the first if, which comes in the case of when the user selects a stop that is before the current bus stop.
The problem is in the elseif logic, when the user selects a stop that has already passed the current bus stop, I have to go through the array again to recalculate the time.
How can I do this?