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

ash*_*him -3 php arrays

在PHP中有函数array_values

$array2 = array_values($array1);
Run Code Online (Sandbox Code Playgroud)

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

$array1 = array( 'a' => 'val1', 'b' => 'val1');
$array2 = array_values( $array1 );
Run Code Online (Sandbox Code Playgroud)

所以现在array2有下一个值

$array2[0] = 'val1'
$array2[1] = 'val2'
Run Code Online (Sandbox Code Playgroud)

如何获得array3:

$array3['a'] = 0
$array3['b'] = 1
Run Code Online (Sandbox Code Playgroud)

Ja͢*_*͢ck 6

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

$array1_keymap = array_flip(array_keys($array1));
Run Code Online (Sandbox Code Playgroud)

例如:

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

$array1_values = array_values($array1);
$array1_keymap = array_flip(array_keys($array1));
Run Code Online (Sandbox Code Playgroud)

价值$array1_values:

array(
    0 => 123,
    1 => 567,
);
Run Code Online (Sandbox Code Playgroud)

价值$array1_keymap:

array(
    'a' => 0,
    'b' => 1,
);
Run Code Online (Sandbox Code Playgroud)

所以:

$array1['a'] == $array1_values[$array1_keymap['a']];
$array1['b'] == $array1_values[$array1_keymap['b']];
Run Code Online (Sandbox Code Playgroud)

  • @ddlshack:最初的问题并没有错 (3认同)