本文目錄一覽:
- 1、為什麼數組下標從0 開始 而不是從 1 開始?
- 2、設置數組默下標從一開始的方法是什麼
- 3、數組下標從1開始如何定義
- 4、php 數組索引值如何重新從0開始遞增
- 5、關於php數組的冗餘問題
- 6、數組的下標應該是從0還是從1開始
為什麼數組下標從0 開始 而不是從 1 開始?
一、並非所有的編程語言的都是從0開始的,VBA就有從1開始的情況,Python還有負數下標。
二、物理內存的地址是從0開始
三、可以把下標看做是偏移量,數組的訪問可以看是對指定偏移地址的數據訪問。當下標為0,即偏移量為0,指向數組的首地址內存。
設置數組默下標從一開始的方法是什麼
數組一開始默認下標都是從0開始,比如int[] i = new int[5];它的下標就是,0,1,2,3,4,如果你要提取下標,寫一個for循環就可以,申明一個變量,循環一次就遞增一次,這樣就可以提取到下標!
數組下標從1開始如何定義
java中數組下標都是從0開始。計算的時候,略過0,從1開始。
String[] arr = new String[]{“a”,”b”,”c”};//定義一個數組for(int i=1;iarr.length;i++){/循環數組,從1開始 System.out.println(arr[i]);//輸出數組元素,這裡最終輸出b,c,不會輸出a}
php 數組索引值如何重新從0開始遞增
對於索引數組,php還有提供了另外一個內置函數,能夠重置數組索引 array_merge($arr) ,當array_merge()只傳入一個參數且鍵名是整數,返回該數組,其鍵名以0開始進行重新索引。
其中PHP中的數組實際上是一個有序映射。映射是一種把values關聯到keys的類型。換言之,數組是特殊的變量,可以同時保存一個以上的值。
在PHP中數組類型有三種:索引數組(帶有數字索引的數組),關聯數組(帶有指定鍵的數組),多維數組(包含一個或多個數組的數組)。
擴展資料:
注意事項:
1、兩個相同的索引數組,同時執行,後面的會把前面的覆蓋掉。
2、在php中 索引數組的下標可以不連續。
3、如果兩個下標是空會自動增加。
4、數組的自動增長下標,默認是從0開始的,自動增長的都是出現過的最大值加1。
5、關聯數組不會影響到索引數組的排序規則,就算是索引數組是負數 也不會影響,最大值+1。
參考資料來源:百度百科-索引數組
參考資料來源:百度百科-php數組
關於php數組的冗餘問題
在PHP語言里,數組通常以0做為下標,但並不代表一定要以0做下標(第1個元素),比如,以下的示例代碼中定義的數組就從下標1開始:
?php
$test = array(1=’aaa’,’bbb’,’ccc’,’ddd’);
echo ‘pre’;
print_r($test);
echo ‘/pre’;
?
運行結果:
Array
(
[1] = aaa
[2] = bbb
[3] = ccc
[4] = ddd
)
至於你說的冗餘問題,如果0元素存在,而你不使用那就是冗餘。
說php語言是弱類型,是指的php與c/c++等語言相比較而言。
c/c++等語言,其變量等在使用之前必須明確定義其變量的數據類型,比如字符型、數字型等,並且通常不允許在定義後改變變量的類型。
而在php里,你通常可以隨便將某個變量從一個類型變成另一個類型,php不會報錯,而如果是強類型的,就會出錯。
舉例:
$var = 123; //定義 var 變量,數值型
$var = “字符串”; //將上面的 var 變成了字符型數據
數組的下標應該是從0還是從1開始
為了更好理解,我們舉個例子:
1、數組在內存中申請是,所申請的內存是一段連續的內存地址;
2、例:int[] a=new int[3];申請一段:int 數據類型的數組,a 為變量,數組長度為:[3];
3、這個數組所申請的內存地址是連續的(假設所申請的:第一個內存地址為:1008,第二個為:1009,第三個為:1010);,但我們只知道:一、變量:a,它只拿到第一個內存地址1008;二、它的數組空間為3個;
4、a[0]——把a拿到的內存地址:1008 + 0 = 1008 (指向第一個內存地址);
a[1]——把a拿到的內存地址:1008 + 1 = 1009 (指向第二個內存地址);
a[2]——把a拿到的內存地址:1008 + 2 = 1010 (指向第三個內存地址);
所以:數據下標從 [0] 開始的意義也在於此!(當然,這是理解版的)。
(備註):如果你寫a[3],它就報錯了,越界錯誤,因為你只申請了3個內存空間。
原創文章,作者:ISIEZ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/316287.html