Go through an array again according to the request - PHP / Laravel

0

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?

    
asked by anonymous 25.06.2018 / 00:33

0 answers