PHP。 array_values函数。如何从旧密钥映射到新密钥?

时间:2012-06-06 23:03:50

标签: php arrays

PHP中有函数array_values

$array2 = array_values($array1);

$array2$array1具有相同的值,但键来自 0sizeof($array1) - 1。是否可以从旧密钥映射到新密钥?
编辑。我将以一个例子来解释:

$array1 = array( 'a' => 'val1', 'b' => 'val1');
$array2 = array_values( $array1 );

所以现在array2有下一个值

$array2[0] = 'val1'
$array2[1] = 'val2'

如何获得array3:

$array3['a'] = 0
$array3['b'] = 1

5 个答案:

答案 0 :(得分:6)

要生成键映射,首先需要将键放入常规数组,然后翻转键和值:

$array1_keymap = array_flip(array_keys($array1));

例如:

$array1 = array(
    'a' => 123,
    'b' => 567,
);

$array1_values = array_values($array1);
$array1_keymap = array_flip(array_keys($array1));

$array1_values的价值:

array(
    0 => 123,
    1 => 567,
);

$array1_keymap的价值:

array(
    'a' => 0,
    'b' => 1,
);

所以:

$array1['a'] == $array1_values[$array1_keymap['a']];
$array1['b'] == $array1_values[$array1_keymap['b']];

答案 1 :(得分:3)

是的,就像

一样简单
$array2 = $array1;

在这种情况下,您将获得原始数组中的值和键。

答案 2 :(得分:1)

$keyMapping = array_combine(array_keys($array1), array_keys($array2));

这是$array1的密钥,并将它们映射到$array2的密钥,就像这样

<?php
$array1 = array(
    'a' => '1',
    'b' => '2',
);

$array2 = array_values($array1);

print_r(array_combine(array_keys($array1), array_keys($array2)));

Array
(
    [a] => 0
    [b] => 1
)

答案 3 :(得分:0)

您可以使用:

$array3 = array_keys($array1);

现在$array3[$n]是任何$array2[$n]的{​​{1}}值的关键。您可以使用它来确定哪些键位于哪些位置。

答案 4 :(得分:0)

如果要保持array1的相同值,但将键更改为索引号,请尝试以下操作:

$array2 = array();
foreach ($array1 as $key => $value){
$array2[] = $value;
// or array_push($array2, $value);
}
var_dump($array2);