您的位置:

php中的数组下标是从1开始的,php数组的下标默认从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个内存空间。