Php 前往';翻译';阵列?
因此,我有一个数组,我想“转换”(只添加该数组的一些值,到具有不同键的不同数组) 最好的方法是什么?我目前有一种方法可以做到这一点,但我认为有一种更好的方法可以做到这一点 例如:API返回以下内容:Php 前往';翻译';阵列?,php,arrays,Php,Arrays,因此,我有一个数组,我想“转换”(只添加该数组的一些值,到具有不同键的不同数组) 最好的方法是什么?我目前有一种方法可以做到这一点,但我认为有一种更好的方法可以做到这一点 例如:API返回以下内容: [ 'id' => 1, 'title' => 'Response title', 'message' => 'Here is a message', 'clueless' => true, 'need_help' => true ] 但
[
'id' => 1,
'title' => 'Response title',
'message' => 'Here is a message',
'clueless' => true,
'need_help' => true
]
但对于我的前端,我需要:
[
'task_id' => 1,
'text' => 'Response title',
'message' => 'Here is a message'
]
请注意,这些值是相同的,但只是它们键不同。此外,还有一些我不需要的值
我当前的方法如下所示:
public function toSpecificFormat($data) {
return [
'task_id' => $data['id'],
'text' => $data['title'],
'message' => $data['message']
];
}
$src = [
'id' => 1,
'title' => 'Response title',
'message' => 'Here is a message',
'clueless' => true,
'need_help' => true
];
$map = ['id' => 'task_id',
'title' => 'text',
'message' => 'messsage',
];
$result = [];
foreach($map as $from => $to) {
$result[$to] = $src[$from];
}
print_r($result);
根据实际需要重写的字段数量,您可能希望创建如下键映射:
public function toSpecificFormat($data) {
return [
'task_id' => $data['id'],
'text' => $data['title'],
'message' => $data['message']
];
}
$src = [
'id' => 1,
'title' => 'Response title',
'message' => 'Here is a message',
'clueless' => true,
'need_help' => true
];
$map = ['id' => 'task_id',
'title' => 'text',
'message' => 'messsage',
];
$result = [];
foreach($map as $from => $to) {
$result[$to] = $src[$from];
}
print_r($result);
但如果你有更多的“重写”键,那么这是比手动复制更灵活的方法,但如果只有一个键(比如2或3),那么OP的代码就完全足够了,我的答案中显示的方式只是简单的工程设计。向我们展示你的最佳尝试(代码),以便我们可以帮助你。对不起,在我完成之前,我不小心按下了提交键。给你最好的。由于您的代码正在运行,这个问题不属于StackOverflow的主题,但可能会被问到。这只是一个简化的示例,我真的不知道为什么我需要为这样一个基本问题提供一个“更好”的示例。老实说,这个解决方案更好吗?提供代码很好,但解释为什么您的解决方案比OP的更好会更好。然而,你可能会得到反对票,因为这个问题是基于意见的,应该发布在上面(OP的代码正在运行,他想改进它),谢谢你的回答。我很感激@Cid这个解决方案从我的代码中删除了大约50行,所以我选择它作为答案:)我不知道这是如何回答这个问题的。OP什么时候要求像您使用
$result
一样翻转键和属性?在我看来,OP只是想重新标记关联数组索引,然后echo json_encode($assocarayorobject)代码>。富人越来越富。我不知道为什么会这样。