2013-06-19 65 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; 
}