2009-11-03 29 views
1

可能重复:
In PHP, how do you change the key of an array element?简单的方法来改变的数组元素的密钥值

我读在一堆多维阵列,并同时通过它们我挖已经注意到一些键是不正确的。

对于每个不正确的密钥,我只是想改变它为零:

从:

$array['bad_value'] 

到:

$array[0] 

我想保留数组元素的值,我只是想改变那个人的钥匙。建议感激。

干杯

+0

如前所述,你不能有多个同名的键,例如0.你在做什么?将这些密钥分成单独的数组是否可以接受? – RMcLeod 2009-11-03 13:42:05

+0

对不起,当我说0时,它只是数字,所以它可能是1或2等等。这不是问题,一些关键是回来一些奇怪的东西,我需要摆脱它们。 – Evernoob 2009-11-03 13:51:11

回答

6
如果更改多个键0,你将覆盖值

...

,你可以这样做

$badKey = 'bad_value'; 
$array[0] = $array[$badKey]; 
unset($array[$badKey]); 
3

猜解方法:

$array[0] = $array['bad_value']; 
unset($array['bad_value']); 
+0

是的,但因为这个数组是一个多维数组的一部分,我需要保持其在包含数组 – Evernoob 2009-11-03 13:49:32

+0

中的位置,您不能在更改密钥时保持位置 - 可以吗? – mauris 2009-11-03 14:09:59

+0

除非位置是数字,否则不是。 – Evernoob 2009-11-03 15:16:29

0
$array['0'][] = $array['bad_value']; 
unset($array['bad_value']); 

然后它将是$ array ['0']中的数组,其值为破碎的元素。

-2

那么看到你说的钥匙可以更改为任何数值如何呢?

$bad_keys = array('bad_key_1', 'bad_key_2' ...); 
$i = 0; 
foreach($bad_keys as $bad_key) { 
    $array[$i] = $array[$bad_key]; 
    unset($array[$bad_key]); 
    $i++; 
} 

编辑:我给的解决方案是可怕的,并没有真正解决问题,因为有多重利空键,这应该会更好。

+2

太糟糕了。绝对不需要在整个阵列上循环。 PHP完全知道如何获得一个命名的数组元素,而不需要循环整个元素。 – 2009-11-03 14:14:27

相关问题