2013-06-19 75 views
1

這是一個奇怪的要求,我認爲升技,但我真的無法弄清楚如何做到這一點:((PHP更改陣列關鍵的價值

我有一個這樣的數組:

$oldArray = array([0]=>'str1', [1]=>'str2', [2]=>'str3'...); 
[edit:] $oldArray = explode(',',$_POST['something']); // a string from an ajax call 

但我想「rejig它」(對不起,不是很專業術語有)這樣:

$newArray = array('str1' => array(), 'str2'=>array(), 'str3'=>array() ...); 
[edit:] What I'm actually trying to do is 
     $_SESSION['bish']['bash'][$newArrayKEY]['bosh'] = somethingElse; 

我真的希望這是足夠的信息,使你們幫我

非常感謝 寶石

+0

我應該說,在$ oldKey是從爆炸 – Gem

+0

確實是一個奇怪的問題。兩者都是相同的數字索引數組。有什麼區別嗎?你在哪裏使用這個在你的應用程序 –

+0

'print_r'新的數組,你會發現它和舊的一樣。我無法理解區別在哪裏? – enenen

回答

6
$newArray = array_combine(
    $oldArray, 
    $oldArray 
); 

會做你問什麼,但我真的不知道你瞭解了數組鍵

所有陣列有一個關鍵:默認的是一個簡單枚舉密鑰,這是你有你的原始數組中

有效你問創建

$newArray = array('str1' => 'str1', 'str2' => 'str2', 'str3' => 'str3' ...); 

編輯

與您編輯的問題:

$newArray = array_fill_keys(
    $oldArray, 
    array() 
); 

雖然我被你想用$ _SESSION

+0

我也是,但那回答了我的問題,所以我感謝你:)我讓自己很迷茫;) – Gem

0

達到嘗試像

$newArray = array_values($oldArray); 
0
什麼困惑

我不完全明白你想要做什麼。你的$ oldArray和$ newArray沒有任何真正的區別。這只是顯示相同數組的兩種方式。 str1,str2,str3是你數組的值。

如果你試圖說你想將你的值移動到數組的「鍵」,那麼看看Marks的答案,如果不是的話,試着多解釋一下。

+0

對不起,我試着更好地解釋它 – Gem

0

array(0 => 'str1', 1 => 'str2', ..);array('str1', 'str2', ..);

類似但這array([0]=>'str1', [1]=>'str2', [2]=>'str3'...);是無效陣列

0

試試這個簡單的陣列功能

$oldArray = array([0]=>'str1', [1]=>'str2', [2]=>'str3'...); 
$array_values = array_values($oldArray);` 
1
$newArray = new array(); 
foreach($oldArray as $key = $value){ 
    $newArray[] = $value; 
}