Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 前往';翻译';阵列?_Php_Arrays - Fatal编程技术网

Php 前往';翻译';阵列?

Php 前往';翻译';阵列?,php,arrays,Php,Arrays,因此,我有一个数组,我想“转换”(只添加该数组的一些值,到具有不同键的不同数组) 最好的方法是什么?我目前有一种方法可以做到这一点,但我认为有一种更好的方法可以做到这一点 例如:API返回以下内容: [ 'id' => 1, 'title' => 'Response title', 'message' => 'Here is a message', 'clueless' => true, 'need_help' => true ] 但

因此,我有一个数组,我想“转换”(只添加该数组的一些值,到具有不同键的不同数组)

最好的方法是什么?我目前有一种方法可以做到这一点,但我认为有一种更好的方法可以做到这一点

例如:API返回以下内容:

[
   '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)。富人越来越富。我不知道为什么会这样。