有一个标准的PHP函数用于将关联数组元素传递给另一个关联数组

时间:2017-12-14 01:34:25

标签: php arrays function indexing associative-array

是否有标准的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)比方说你有两个来自帖子的数组需要通过      同样精确的过程,除了两个数组,尽管均值/包含相同的确切类型      值/顺序/结构,它们的索引名称是不同的。所以当      传递给只有一组索引名称的函数/方法,你就是这样      需要在将索引名称传递给该函数/方法之前转换它们。

5 个答案:

答案 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