2012-11-22 62 views
4

例如,我想更改数组的索引。我有一个数组在php中更改数组的索引

$a = array("a","e","i","o","u"); 
echo $a[0]; //output a 

这意味着该数组的索引为(0,1,2,3,4)

现在我想从指数100,而不是0

手段阵列开始我的数组与索引(100,200,300,400,500)

+1

如果此数组是动态创建的,那么您可以轻松地在循环中指定所需的索引。 –

+0

有没有这样的系统?总是有限的数值吗?它是动态的吗?你不能只用手输入它吗? – deceze

+3

为什么你会想要这种行为有一个实际的有效理由吗? –

回答

5

如果你想声明数组,这样你应该做的:

$array = array(100 => 'a', 200 => 'b', 300 => 'c', 400 => 'd', 500 => 'e'); 

注意,如果你添加一个新的元素到$array以较短的方式($array[] = 'f')分配的密钥将是501

如果你想转换规则排列索引数百个基于那些你可以这样做:

$temp = array(); 
foreach ($array as $key => $value) { 
    $temp[(($key + 1) * 100)] = $value; 
} 
$array = $temp; 

但也许你并不真的需要转换没有数组,而是访问您当前一个是这样的:

$i = $hundredBasedIndex/100 - 1; 
echo $array[$i]; 
// or directly 
echo $array[($hundredBasedIndex/100 - 1)]; 
+0

谢谢Jackflash的回答。这是我第一次在网上问问题。你真的以非常正确的方式给出你的答案并解释所有的事情。谢谢!!! :) –

+0

不客气,我的朋友! :) – Carlos

-1

只要以这种方式创建数组。

$myarray = array(
    100 => 'a', 
    200 => 'b', 
); 

如果你已经有一个顺序的排列,并希望通过100乘以键,可以在一个循环中这样做(还有其他的方式,但...):

$a = array('a', 'b', 'c', 'd', 'e'); 

$newarray = array(); 
foreach($a as $key => $value) 
    $newarray[100*($key+1)] = $value; 
-1

简单地改变你的阵列像这样:

$a = array(100 => "a", 200 => "e", 300 => "i", 400 => "o", 500 => "u"); 
1

您可以简单地定义一个起始索引并迭代交换索引的数组。 事情是这样的 -

$oldArray = array("a","e","i","o","u"); 
$newArray = array(); 
$startIndex = 100; 

foreach($oldArray AS $key => $value){ 
    $newArray[$startIndex] = $value; 
    startIndex += 100; 
} 
+1

除了'startIndex'必须增加100. – LSerni

+0

@ise - 哎呀!感谢那!多么尴尬;-)我仍然对这种行为背后的逻辑感到困惑......我希望OP有这样做的合理理由...... – Lix

0

只是做一个关联数组键,只要你想索引。例如:

$myArray = array(100=>"a",200=>"e",300=>"i",400=>"o",500=>"u"); 

然后调用类的值:

echo $myArray[100] ; 

注:不要把'100'=>"a"代替100=>"a"

4

其他解决方案:

$a = array_combine(array(100, 200, 300, 400, 500), $a); 
+1

+1整洁 – LSerni

+0

感谢m4t1t0给予功能解决方案... :) –

+0

@BhuvneshGupta不客气! – m4t1t0

0

$ key = array(100,200,300,400,500);

$ b = array_combine($ key,$ a);