php - 更新数组内的数组键
问题描述
我的目标是能够更新数组内部的键值,我不知道我是否使用了正确的 php 数组函数。
前:
array:2 [
"week_number" => 1
"games" => array:1 [
0 => array:3 [
"game_number" => 1
"umpires" => []
"teams" => []
]
]
]
后:
array:2 [
"week_number" => 1
"games" => array:1 [
0 => array:3 [
"game_number" => 1
"umpires" => []
"teams" => [1,2]
]
]
]
测试类:
private function validParams($overrides = [])
{
return array_merge_recursive([
'week_number' => 1,
'games' => [[
'game_number' => 1,
'umpires' => [],
'teams' => [],
]]
], $overrides);
}
$response = $this->actingAs($this->authorizedUser)
->post(route('games.store', ['week' => $this->week->id]), $this->validParams([
'games' => [][
[
'teams' => [1,2]
]
]
]));
解决方案
这是您需要的时刻unset()
:使用不同的键添加值不会更新或覆盖旧值,而只是添加另一个键值对。因此,添加新值拳头,然后取消设置旧值拳头。我们可以使用 Toarray_walk
来遍历数组:
array_walk($array, function (& $item) {
$item['new_key'] = $item['old_key'];
unset($item['old_key']);
});
注意&
lambda 函数中的引用运算符:它确保我们正在处理原始数组而不是它的副本。
推荐阅读
- java - 如何制作随机超递增数组
- reactjs - 使用类组件中的 React Hooks 将 onCancel 转换为功能组件
- python - 为什么一个变量是全局访问的,而另一个变量不在 Python 中?
- javascript - 无法通过反应路由器 dom v6 beta 传递状态,状态为空
- swift - 我在 TableViewCells 中有 CollectionView 单元格。我在根据不同的模拟器调整 UIImageView 宽度时遇到问题
- powershell - 编写摘要日志并从脚本中捕获错误
- regex - Kubernetes 入口重写目标和重写正则表达式/捕获组 (?i)
- r - 如何替换r中的列中的条目
- r - 在 R Markdown 上嵌入 shinyapps.io 应用程序的问题
- haskell - 如何从列表中返回列表 Haskell