如何在 laravel 控制器中迭代这个对象数组?

How do I iterate this array of object in laravel controller?

我对点击按钮进行了 ajax 调用,然后将数组数据发送到控制器。所以这是 ajax 调用:

const saveBtnOnClick = () => {
        //e.preventDefault();
        loopMarker(poly);
        $.ajax({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            url: "{{ route('storeRouteMap') }}",
            type: 'POST',
            data: {markers: markers},
            success: function (response) {
                console.log(response);
            },
            error: function (response) {
                console.log("Error " + response);
            }
        })
    }

有效负载开发人员工具中传递的数据如下所示:

markers[0][lat]: 3.2845171928345853
markers[0][long]: 101.8885194254942
markers[0][sequence]: 0
markers[0][route_id]: 5
markers[1][lat]: 3.591580368128944
markers[1][long]: 102.5367127848692
markers[1][sequence]: 1
markers[1][route_id]: 5

在控制器中:

public function store(Request $request): JsonResponse
{
    $out = new ConsoleOutput();
    $routeMaps = $request->all();

    $out->writeln($routeMaps[1]['long']);

    try{
        foreach($routeMaps as $key=>$value){
            $out->writeln($value['lat']);
            $out->writeln($value['long']);
            $out->writeln($value['sequence']);
            $out->writeln($value['route_id']);
        }

但是$out->writeln($value['lat'])给出了错误,未定义的数组键'lat'$out->writeln($routeMaps[1]['long'])给出了错误,未定义的数组键1 ;那么这个数组的结构是如何让我迭代的呢?

您正在以键值形式传递数据,即 markers: markers。所以你在控制器中的请求参数就像:$request->markers。 您需要遍历 $request->markers.

$routeMaps = $request->markers;

foreach($routeMaps as $key => $value){
   $out->writeln($value['lat']);
   $out->writeln($value['long']);
   $out->writeln($value['sequence']);
   $out->writeln($value['route_id']);
}

希望这会奏效:)