Foreach 不 return 所有值

Foreach does not return all values

我有一个 foreach,但它只有 return 最后一个值而不是所有值,有什么问题?

我的阵列

array:1 [▼
  "ciudad" => array:15 [▼
    0 => "Piura"
    1 => "10"
    2 => "0"
    3 => "Lima"
    4 => "20"
    5 => "0"
    6 => "Pisco"
    7 => "30"
    8 => "0"
    9 => "Arequipa"
    10 => "40"
    11 => "0"
    12 => "Loreto"
    13 => "50"
    14 => "0"
  ]
]

我的代码:

public function updateciudadpreciosdelivery(Request $request)
{
    $data = $request->except(['_token', 'restaurant_id']);
    $i = 0;
    $result = [];
    foreach ($data as $day => $times) {
        $day_result = [];
        foreach ($times as $key => $time) {
            if ($key % 3 == 0) {
                $day_result["open"] = $time;
            }
            elseif ($key % 2 == 0) {
                $day_result["cod"] = $time;
            }
            else {
                $day_result["close"] = $time;
            }
        }
        $result[$day][] = $day_result;
    }
    // Fetches The Restaurant
    $restaurant = Restaurant::where('id', $request->restaurant_id)->first();
    // Enters The Data
    if (empty($result)) {
        $restaurant->deliveryciudadprecios = null;
    }
    else {
        $restaurant->deliveryciudadprecios = json_encode($result);
    }
    $restaurant->delivery_charge_type = 'XCIUDAD';
    // Saves the Data to Database
    $restaurant->save();
    return redirect()->back()->with(['success' => 'Las ciudades se guardaron correctamente']);      
}

目前只有return最后一个值

"{"ciudad":[{"open":"Loreto","close":"50","cod":"0"}]}"

我需要你return以下(示例)

{"ciudad":[{"open" :"Piura","close" :"10","cod" :"0"},{"open" :"Lima","close" :"20","cod" :"0"},{"open" :"Pisco","close" :"30","cod" :"0"},{"open" :"Arequipa","close" :"40","cod" :"0"},{"open" :"Loreto","close" :"50","cod" :"0"}]}

如有不明白我会努力改进

如果我们认为您的数据不会改变,而您有 3 个条目要获取,您可以使用 array_chunk:

$result = [];
foreach ($data as $day => $times) {
    $timesChunked = array_chunk($times, 3);
    
    foreach ($timesChunked as $time) {
        $result[$day] []= [
            'open' => $time[0],
            'close' => $time[1],
            'code' => $time[2],
        ];
    }
}

但是你的问题是合乎逻辑的,你没有改变循环中的键,当然你的数组将只有最后一个元素。重新阅读您的代码,并尝试理解原因。