Проходя через две колонки одновременно в Laravel - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу получить значения двух столбцов и выполнить цикл по двум из них одновременно и использовать его для вычисления расстояния, используя широту и долготу, но проблема заключается в том, что он цикличен для всей широты для механики, а цикл для всю долготу для механики, но эти две должны быть объединены в одну.

            $mechanicsLatitude = DB::table("tranxav_mechanics")->get(['latitude','email']);
            $mechanicsLongitude = DB::table("tranxav_mechanics")->get(['longitude', 'email']);

              foreach ($mechanicsLatitude as $latitudeData){
                  foreach ($mechanicsLongitude as $longitudeData){
                       $theta = $driverLongitude - $longitudeData->longitude;
                      $dist = sin(deg2rad($driverLatitude)) * 
                              sin(deg2rad($latitudeData->latitude)) 
                          +  cos(deg2rad($driverLatitude)) 
                          * cos(deg2rad($latitudeData->latitude)) 
                          * cos(deg2rad($theta));
                        $dist = acos($dist);
                       $dist = rad2deg($dist);
                       $miles = $dist * 60 * 1.1515;
                      $unit = strtoupper("K");

                      if ($unit == "K") {
                        return $miles =  $miles * 1.609344;
                      } elseif ($unit == "N") {
                            $miles = $miles * 0.8684;
                      } else {
                            $miles;
                      }

                        TranxavTransaction::create([
                            'dEmail' => $request->get("email"),
                            'mEmail' => $longitudeData->email,
                            'car_model' => $model,
                            'how_it_happened' => $request->get("likelyProblem"),
                            'latitude' => $request->get("latitude"),
                            'longitude' => $request->get("longitude"),
                            'problem' => input::get('likelyProblem')
                        ]);
                    }
                 }

1 Ответ

0 голосов
/ 30 апреля 2018

Вместо использования foreach вы можете использовать простой цикл for с индексами:

for ($i = 0; $i < $mechanicsLatitude->count(); $i++)
    $theta = $driverLongitude - $mechanicsLongitude[$i]->longitude;
    .
    .
    .

И убедитесь, что $ mechanicsLatitude и $ mechanicsLongitude имеют одинаковую длину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...