如何访问数组元素
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;