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],
];
}
}
但是你的问题是合乎逻辑的,你没有改变循环中的键,当然你的数组将只有最后一个元素。重新阅读您的代码,并尝试理解原因。
我有一个 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],
];
}
}
但是你的问题是合乎逻辑的,你没有改变循环中的键,当然你的数组将只有最后一个元素。重新阅读您的代码,并尝试理解原因。