是否有标准的PHP函数可以更改关联数组的索引名称?
$a1 = array('one'=>1,'two'=>2,'three'=>3);
$new_index_names = array('one'=>'ono','two'=>'dos','three'=>'tres');
$a2 = change_index_names($a1,$new_index_names);
print_r($a2);
// $a2 should have the index names changed accordingly and look like this:
// array('ono'=>1,'dos'=>2,'tres'=>3)
修改 请注意,该函数需要知道新索引名称的映射。含义,在$ new_index_names数组中提供映射。所以,它需要知道' ono'是' one'的新索引名称。
修改 我知道你们可以提出自己的解决方案,我想知道有一个标准的PHP函数已经做到了。
修改
在某些情况下,更改索引名称会有所帮助:
1)将后值名称分隔为通用/内部名称,以便您可以分开
你的后端代码来自前端代码。
2)比方说你有两个来自帖子的数组需要通过
同样精确的过程,除了两个数组,尽管均值/包含相同的确切类型
值/顺序/结构,它们的索引名称是不同的。所以当
传递给只有一组索引名称的函数/方法,你就是这样
需要在将索引名称传递给该函数/方法之前转换它们。
答案 0 :(得分:3)
您不需要array_values
要获得所需的输出,您只需使用
array_combine($new_index_names,$a1);
答案 1 :(得分:2)
不仅仅是1个函数,但您可以使用array_values
获取第一个数组的值,使用array_combine
来设置新键
答案 2 :(得分:1)
假设两个数组具有相同的计数,则一种方法是array_combine()
和array_values()
$a2 = array_combine(array_values($new_index_names), $a1);
答案 3 :(得分:1)
之前的答案不考虑$a1
和$new_index_names
的顺序,所以我将解决方案放在以下位置:
$a1 = array('one' => 1, 'two' => 2, 'three' => 3, 'zero' => 0);
$new_index_names = array('zero' => 'zero', 'one' => 'ono', 'two' => 'dos', 'three' => 'tres');
array_combine(
$new_index_names,
str_replace(array_keys($a1), array_values($a1), array_keys($new_index_names))
);
Array
(
[zero] => 0
[ono] => 1
[dos] => 2
[tres] => 3
)
答案 4 :(得分:0)
迄今为止我见过的最佳答案:
foreach ($a1 as $k => $v) $a2[$new_index_names[$k]] = $v;
积分转到jh1711