2009-11-03 54 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

相關問題