定义数组的方式有几种,定义数组的方式有几种
php中数组的定义有几种方法及区别
数组在PHP中包含2种表现,
一种是普通数组,定义方式有二种,
第一:
$a = array("aa","bb","cc")
第二:
$a[] = "aa";
$a[] = "bb"
$a[] = "cc";
一般用数组遍历的方式可以打印出所有数据,也可以使用数组的位标(从0开始计算)自定义打印,比如:
$a[0]的值就是aa,$a[1]的值是"bb"
数组遍历自己搜索下,也是2种方式
另外是别名数组,定义也是2种
第一:
$a = array("aa"= "11","bb"="22")
第二:
$a["aa"] = "11";
$a["bb"] = "22";
使用数组的位标在别名数组就不行了,必须用别名
$a[0]就取不到值了,$a[“aa”]才能取到值"11"
数组遍历其中foreach有点不一样,自己搜索下
创建数组的几种方式
一、数组分类
1.数组是由一组有序的值或键值对组成的数据结构
2.数组根据键名类型分为:索引数组 与 关联数组 二大类
3.索引数组:键名是元素的位置索引,默认从0开始,采用系统自动处理可以省略键名
4.关联数组:键名是自定义的字符串,类似于对象中的属性列表
//索引数组: 采用字面量直接定义
$arts = ['亢龙有悔', '飞龙在天', '见龙在田', '鸿渐于陆', '潜龙勿用', '突如其来'];
//关联数组: 采用字面量直接定义
$swordsman = ['name'='郭靖','position'='金刀驸马','skill'='降龙十八掌'];
二、数组定义
1. 整体定义: $arr = [...]
2. 逐个定义: $arr[] = ...
3. 数组元素可以是字面量,也可以变量,甚至还可以是数组,从而创建多维数组
//逐个定义:以添加的方式的来创建数组
$position = '金刀驸马';
$swordsman=[];
$swordsman['name'] = '郭靖';
$swordsman['position'] = $position;
$swordsman['skill'] = '降龙十八掌';
三、数组遍历
1. for()循环:适合遍历索引数组
2. while()循环
3. foreach()循环: 数组专用,强烈推荐
4. list(),each(),while()配合完成的遍历,因为each()已不再推荐,所以不再学习
4. 内部指针
1. for()循环:
$resl = '';
for($i=0;$icount($arts);$i++)
{
$resl .=$arts[$i].',';
}
echo rtrim($resl,',').'hr'; //去掉最右边留下来的逗号
2. while()循环
$res2 = '';
$i = 0;
while($icount($arts))
{
$res2 .= $arts[$i].'-';
$i++;
}
echo rtrim($res2,'-').'hr';
3. foreach()循环
//3.foreach
foreach ($arts as $key=$value)
{
echo $key.'---'.$value.'br';
}
4.list(),each(),while()遍历
list($var1,$var2,...) = [value1, value2,....]:将索引数组中的值,依次赋给list()中的变量
each($arr):将数组中的每个元素,拆分键和值二部分,并分别以索引和关联二种方式返回
//测试each()
$arr = [100,'name'='DonnieKing'];
$temp = each($arr);
echo 'pre';
print_r($temp);
$temp = each($arr);
echo 'pre';
print_r($temp);
echo 'hr';
while(list($key,$value) = each($swordsman))
{
echo $key.'---'.$value.'br';
}
echo 'hr';
5.内部指针
(1)current():当前指针指向元素的值
(2)key(): 当前指针指向元素的键名/索引
(3)next(): 指针后移
(4)prev(): 指针前移
(5)end(): 指针移到尾部最后一个元素上
(6)reset(): 指针复位,指向第一个元素
//指针复位
reset($arts);
//获取第一个元素的键值
echo key($arts),'---',current($arts),'br';
//后移一位,获取第二个元素的键值
next($arts);
echo key($arts),'---',current($arts),'br';
//前移一位
prev($arts);
echo key($arts),'---',current($arts),'br';
//移到最后,获取最后一个元素的键值
end($arts);
echo key($arts),'---',current($arts),'br';
echo 'hr';
//记得先复位数组指针,从头开始遍历
reset($arts);
for($i=0;$icount($arts);$i++)
{
echo key($arts).'---'.current($arts) .'br';
next($arts); //指针后移一位
}
//使用while循环配置指针进行遍历
echo 'hr';
reset($arts);
//使用入口判断型,会导致第一招丢失
while(next($arts))
{
// prev($arts);
echo key($arts).'---'.current($arts).'br';
}
//应该使用出口判断结构: do ~ while()
echo 'hr';
reset($arts);
do{
echo key($arts).'---'.current($arts).'br';
}while(next($arts)) ;
简述VFP中定义数组的几种方法?
定义数组命令:declare或者dimension命令。
1.dimension命令
dimension ar (10) :
定义一个一维数组ar,该数组有10个元素,数组下标从1开始。
dimension ab[3,2] :
定义一个二维数组ab,该数组有6个元素。
2.declare命令
declare a(3,4):
定义一个二维数组a,该数组有12个元素。
java中数组的定义:
字符串数组:
1、String[] str=new String[5];
2、String[] str=new String[]{"a","b"};
3、String[] str={"a","b"};
整形数组:
1、int[] i=new int[5];
2、int[] i=new int[]{0,1};
3、int[] i={0,1};
C语言数组定义:
一般有四种数组定义方式,以一维数组为例:
//定义指定维数的数组
int arr[10];
//定义不指定维数的数组,数组维数有初化列表元素个数决定。
int arr[] = {1,2,4};
//定义指定维数的数组,初始化不完全时,系统将未初始化元素初始化为0
int arr[10] = {1,2};
//动态分配一个数组。下面分配了一个有10个元素的数组。
int *arr =(int *) malloc(10 * sizeof(int));
c语言数组定义的几种方式
数组的定义
数组就是指用于存储同一类型数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组
数组定义的方式
数组定义的方式有四种形式,分别是:
(1)类型名[] 数组名;
(2)类型名[] 数组名 = { 初始值列表 };
(3)类型名[] 数组名 = new 类型名[ 数组大小 ];
(4)类型名[] 数组名 = new 类型名[ 数组大小 ] { 初始值列表 };
数据类型:指的是数组元素的数据类型,常见的有整形、浮点型、与字符型等
数组名:是用来统一这组相同数据类型元素的名称,其命名规则和变量的相同
c++中有几种方法定义数组
一、一维数组
静态 int array[100]; 定义了数组array,并未对数组进行初始化
静态?int array[100] = {1,2};定义并初始化了数组array
动态?int* array = new int[100]; ?delete []array;分配了长度为100的数组array
动态?int* array = new int[100](1,2);? delete []array; 为长度为100的数组array初始化前两元素
二、二维数组
静态 int array[10][10];定义了数组,并未初始化
静态 int array[10][10] = { {1,1} , {2,2} };数组初始化了array[0][0,1]及array[1][0,1]
动态 int (*array)[n] = new int[m][n]; delete []array;
动态 int** array = new int*[m]; for(i) array[i] = new int[n]; ?for(i) delete []array[i]; delete []array; ? ?多次析构
动态 int* array = new int[m][n]; ?delete []array; ? ? ?数组按行存储
三、多维数组
int* array = new int[m][3][4]; ? ?只有第一维可以是变量,其他维数必须是常量,否则会报错
delete []array; ? ? ? 必须进行内存释放,否则内存将泄漏
四、数组作为函数形参传递
一维数组传递:
void func(int** array);
void func(int (*array)[n]);
二维数组传递:
void func(int* array);
void func(int array[]);
数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针,而且在其失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。
五、字符数组
char类型的数组被常委字符数组,在字符数组中最后一位为转移字符'\0'(也被成为空字符),该字符表示字符串已结束。在C++中定义了string类,在Visual C++中定义了Cstring类。
字符串中每一个字符占用一个字节,再加上最后一个空字符。如:
char array[10] = "cnblogs";
虽然只有7个字节,但是字符串长度为8个字节。
也可以不用定义字符串长度,如:char array[] = "cnblogs";