2012-11-22 97 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);