如何訪問數組元素
1. 簡述foreach循環是如何訪問數組中元素的(php編程)
語句如下:
foreach($carFactory as $key=>$car){//在遍歷的過程中為 car添加一個新的屬性比如生產日期
$carFactory[$key]['made_time'] = time();}
PHP是開源軟體,所有PHP的源代碼每個人都可以看得到,代碼在許多工程師手中進行了檢測,同時它與Apache編繹在一起的方式也可以讓它具有靈活的安全設定,PHP具有了公認的安全性能。開源造就了強大,穩定,成熟的系統。
跨平台特性,PHP幾乎支持所有的操作系統平台及資料庫系統,並廣為流行。
執行速度快, 效率高,PHP是一種強大的CGI腳本語言,語法混合了C、java、Perl和PHP式的新語法,執行網頁速度比CGI、Perl和ASP更快,而且內嵌Zend加速引擎,性能穩定快速,佔用系統資源少,代碼執行速度快。
php優點:
2. 如何訪問string數組的某個元素
可以通過數組名和下標來訪問數組,比如array[0]獲取到第一個數組元素
3. 訪問數組中的某個元素可以通過什麼來完成
與使用下標相比,使用指針能使C編譯程序更容易地產生優質的代碼。假設你的程序中有這樣一段代碼:
/* X la some type */
X a[MAX];
X *p; /*pointer*/
X x; /*element*/
int i; /*index*/
為了歷數組a中的所有元素,你可以採用這樣一種循環方式(方式a)
/*version (a)*/
for (i = 0; i<MAX; ++i)
{
x=a[i];
/* do something with x * /
}
你也可以採用這樣一種循環方式(方式b)
/*veraion(b)*/
for (p = a; p<&a[MAX]; ++p )
{
x=*p;
/* do aomething with x * /
}
這兩種方式有什麼區別呢?兩種方式中的初始情況和遞增運算是相同的,作為循環條件的比較表達式也是相同的(下文中將進一步討論這一點)。區別在於「x=a[]」和「x=*p」,前者要確定a[i]的地址,因此需要將i和類型x的大小相乘後再與數組a中第一個元素的地址相加;
後者只需間接引用指針p。間接引用是快速的,而乘法運算卻比較慢。
這是一種「微效率」現象,它可能對程序的總體效率有影響,也可能沒有影響。對方式a來說,如果循環體中的操作是將數組中的元素相加,或者只是移動數組中的元素,那麼每次循環中大部分時間就消耗在使用數組下標上;如果循環體中的操作是某種I/O操作,或者是函數調用,那麼使用數組下標所消耗的時間是微不足道的。
在有些情況下,乘法運算的開銷會降低。例如,當類型x的大小為1時,經過優化就可以將乘法運算省去(一個值乘以1仍然等於這個值);當類型x的大小是2的冪時(此時類型x通常是系統固有類型),乘法運算就可以被優化為左移位運算(就象一個十進制的數乘以10一樣)。
在方式b中,每次循環都要計算&a[MAX],這需要多大代價呢?這和每次計算a[i]的代價相同嗎?答案是不同,因為在循環過程中&a[MAX]是不變的。任何一種合格的編譯程序都只會在循環開始時計算一次&a[MAX],而在以後的每次循環中重復使用這次計算所得的值。
在編譯程序確認在循環過程中a和MAX都不變的前提下,方式b和以下代碼的效果是相同的:
/* how the compiler implements version (b) */
X *temp = &a[MAX]; /* optimization */
for (p = a; p< temp; ++p )
{
x =*p;
/*do something with x * /
}
遍歷數組元素還可以有另外兩種方式,即以遞減而不是遞增的順序遍歷數組元素。對按順序列印數組元素這樣的任務來說,後兩種方式沒有什麼優勢,但是對數組元素相加這樣的任務來說,後兩種方式比前兩種方式更好。通過下標並且以遞減順序遍歷數組元素的方式(方式c)如下所示(人們通常認為將一個值和。比較的代價要比將一個值和一個非零值比較的代價小:
/* version (c) */
for (i = MAX - 1; i>=0; --i)
{
x=a[i];
/* do aomcthing with x * /
}
通過指針並以遞減順序遍歷數組元素的方式(方式d)如下所示,其中作為循環條件的比較表達式顯得很簡潔:
/* version (d) */
for (p = &a[MAX - 1]; p>=a; --p )
{
x =*P;
/*do something with x * /
}
與方式d類似的代碼是很常見的,但不是絕對正確的,因為循環結束的條件是p小於a,而這有時是不可能的(見9.3)。
通常人們會認為「任何合格的能優化代碼的編譯程序都會為這4種方式產生相同的代碼」,但實際上許多編譯程序都沒能做到這一點。筆者曾編寫過一個測試程序(其中類型x的大小不是2的冪,循環體中的操作是一些無關緊要的操作),並用4種差別很大的編譯程序編譯這個程序,結果發現方式b總是比方式a快得多,有時要快兩倍,可見使用指針和使用下標的效果是有很大差別的(有一點是一致的,即4種編譯程序都對&a[MAX]進行了前文提到過的優化)。
那麼在遍歷數組元素時,以遞減順序進行和以遞增順序進行有什麼不同呢?對於其中的兩種編譯程序,方式c和方式d的速度基本上和方式a相同,而方式b明顯是最快的(可能是因為其比較操作的代價較小,但是否可以認為以遞減順序進行要比以遞增順序進行慢一些呢?);對於其中的另外兩種編譯程序,方式c的速度和方式a基本相同(使用下標要慢一些),但方式d的速度比方式b要稍快一些。
總而言之,在編寫一個可移植性好、效率高的程序時,為了遍歷數組元素,使用指針比使用下標能使程序獲得更快的速度;在使用指針時,應該採用方式b,盡管方式d一般也能工作,但編譯程序為方式d產生的代碼可能會慢一些。
需要補充的是,上述技巧只是一種細微的優化,因為通常都是循環體中的操作消耗了大部分運行時間,許多C程序員往往會舍本求末,忽視這種實際情況,希望你不要犯相同的錯誤。
4. 建立一個數組,數組中包括三個元素,然後訪問數組元素!
定義數組
數組對象用來在單獨的變數名中存儲一系列的值。
我們使用關鍵詞 new 來創建數組對象。下面的代碼定義了一個名為 myArray 的數組對象:
var myArray=new Array()
有兩種向數組賦值的方法(你可以添加任意多的值,就像你可以定義你需要的任意多的變數一樣)。
1:
var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"
也可以使用一個整數自變數來控制數組的容量:
var mycars=new Array(3)
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"
2:
var mycars=new Array("Saab","Volvo","BMW")
注意:如果你需要在數組內指定數值或者邏輯值,那麼變數類型應該是數值變數或者布爾變數,而不是字元變數。
訪問數組
通過指定數組名以及索引號碼,你可以訪問某個特定的元素。
下面是代碼行:
document.write(mycars[0])
下面是輸出:
Saab
修改已有數組中的值
如需修改已有數組中的值,只要向指定下標號添加一個新值即可:
mycars[0]="Opel";
現在,以上代碼:
document.write(mycars[0]);
將輸出:
Opel
5. java中怎麼訪問數組的元素
可以通過數組名和下標來訪問數組,比如array[0]獲取到第一個數組元素。
以下代碼供你參考一下:
packagecom.sd;
publicclassArrayOutput{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
int[]array=newint[5];
//通過循環,初始化一個長度為5的整型數組
for(inti=0;i<array.length;i++){
array[i]=i+1;
}
//在通過循環,遍歷每一個元素,並輸出
for(intj=0;j<array.length;j++){
System.out.println(array[j]);
}
}
}
6. 如何用數組指針訪問數組中的元素(C++)
數組在內存中的存儲數據就是從array[0]----->array[9]
不會存儲什麼array或者*array
array只是一個數組的名字,它不佔據存儲空間.但是它有值,它的值就是數組的首
地址值.
ptr[2]=array; ptr[2]為int 類型 array為指針 錯
*ptr=array; 相當於ptr[0]=array 錯誤
*ptr[3]=*array; 相當於 array[3]=array[0]; 對.
訪問:
for(i=0;i<10;i++)
{
printf("%d",*ptr++);
}
for(i=0;i<10;i++)
{
printf("%d",ptr[i]);
}
兩個都可以
7. C#中ArrayList類定義的數組 如何訪問數組里的元素
1. 需強制轉換成 你想要的類型
2. 示例代碼如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Collections;
namespaceConsoleApplication2
{
classProgram
{
staticvoidMain(string[]args)
{
ArrayListlst=newArrayList(){2,3,4,5};
//訪問其元素值,強制轉換
for(inti=0;i<lst.Count;i++)
{
Console.WriteLine((int)lst[i]);
}
Console.Read();
}
}
}
3. 運行結果如下:
8. 如果指針指向一個數組,如何隨機訪問其指向的數組元素
舉個例子:
int is[10];
int *pi = is;
訪問數組中元素的三種方法:
is[i];// i<10
pi[i];
*(pi+i);
9. C語言里應該怎麼來訪問數組中的元素
用數組下標來訪問
例如,定義一個數組:int a[5]={1,2,3,4,5};
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
a[4]=5;