php - 在 php laravel/api 中合并两个 foreach
问题描述
再会!我成功地找到了缩短我的代码的答案。有人说我可以合并 foreach 语句使其变得更短。但我到处搜索,但似乎找不到任何具有类似代码的解决方案。我只想知道如何合并这两个 foreach。
这是我的代码:
$newArray = [];
$keys = ['name', 'sex', 'age', 'height', 'weight'];
foreach(explode(PHP_EOL, Storage::get('upload/test.txt')) as $key => $line) {
$finalArray = [];
foreach( explode(',', $line) as $i => $value){
$finalArray[ $keys [ $i ] ] = $value;
}
array_push($newArray, $finalArray);
}
die(json_encode($newArray));
这是另一个与第一个代码具有相同输出的代码:
$newArray = array();
foreach(explode(PHP_EOL, Storage::get('upload/test.txt')) as $key => $line) {
array_push($newArray, explode(',', $line));
}
$finalArray = array();
foreach($newArray as $key) {
$key = [
"name" => $key[0],
"sex" => $key[1],
"age" => $key[2],
"height" => $key[3],
"weight" => $key[4],
];
array_push($finalArray, $key);
}
die(json_encode($finalArray));
解决方案
您可以使用array_combine使其更简单:
$newArray = [];
$keys = ['name', 'sex', 'age', 'height', 'weight'];
foreach (explode(PHP_EOL, Storage::get('upload/test.txt')) as $line) {
$newArray[] = array_combine($keys, explode(',', $line));
}
或者您可以使用array_map()并执行以下操作:
$keys = ['name', 'sex', 'age', 'height', 'weight'];
$newArray = array_map(function ($line) use ($keys) {
return array_combine($keys, explode(',', $line));
}, explode(PHP_EOL, Storage::get('upload/test.txt')));
推荐阅读
- javascript - 使用 JavaScript 匹配数组中字符串的一部分
- javascript - Firebase Auth Signout 未推送到 React Web 应用程序中的主页
- ios - Swift:在应用程序之间共享身份验证状态
- django - 从不受支持的版本更新 postgres 数据库重要吗?
- styles - 无论配置如何,Html 净化器都会删除图像样式,我该如何允许?
- python - 使用 nn.ModuleDict 编码的训练网络
- python - 创建类内散布矩阵的更多pythonic方式
- html - IOS 的媒体查询不使用位置固定背景图像
- node.js - 无法访问 localhost:3000/
- sql - PostgreSQL 更新