PHP中有函数array_values,
$array2 = array_values($array1);
$array2
与$array1
具有相同的值,但键来自
0
到sizeof($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
答案 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);