PHP笔记6--数组及相关操作


数组,数据的组合,指将一组数据(多个)存储到一个指定的容器中

数组定义语法

在PHP中系统提供多种定义数组的方式
1、 使用array关键字:最常用的
$变量 = array(元素1,元素2,元素3…);
2、 可以使用中括号来包裹数据:
$变量 = [元素1,元素2…];
3、隐形定义数组:给变量增加一个中括号,系统自动变成数组
$变量[] = 值1; //如果不提供下标也可以,系统自动生成(数字:从0开始)
$变量[下标] = 值; //中括号里面的内容称之为下标key,该下标可以是字母

$a = array(1,'2',3,null,'dd');
var_dump($a);echo '<br/>';//array(5) { [0]=> int(1) [1]=> string(1) "2" [2]=> int(3) [3]=> NULL [4]=> string(2) "dd" } 
$b = [1,'2',3,null,'dd'];
var_dump($b);echo '<br/>';//array(5) { [0]=> int(1) [1]=> string(1) "2" [2]=> int(3) [3]=> NULL [4]=> string(2) "dd" }
$c[] = 123;
var_dump($c);echo '<br/>';//array(1) { [0]=> int(123) } 
$d[2] = 123;
var_dump($d);echo '<br/>';//array(1) { [2]=> int(123) } 

PHP数组特点

1) 可以整数下标或者字符串下标
如果数组下标都为整数:索引数组
如果数组下标都为字符串:关联数组
2) 不同下标可以混合存在:混合数组
3) 数组元素的顺序以放入顺序为准,跟下标无关
4) 数字下标的自增长特性:从0开始自动增长,如果中间手动出现较大的,那么后面的自增长元素从最大的值+1开始
5) 特殊值下标的自动转换
布尔值:true和false
空:NULL
6) PHP中数组元素没有类型限制
7) PHP中数组元素没有长度限制

$a['age']=12;
echo $a['age'];//12
$a[0]='哈哈';
$a[1]='哈哈1';
$b[false]=false;
$b[true]=true;
$b[NULL]=NULL;
var_dump($a);//array(3) { ["age"]=> int(12) [0]=> string(4) "哈哈" [1]=> string(5) "哈哈1" } 
var_dump($b);//array(3) { [0]=> bool(false) [1]=> bool(true) [""]=> NULL }

二维数组

二维数组:数组里面的元素又是数组

$info = array(
array(1,2,3),
array(4,5,6),
array(7,8,9)
);
print_r($info);
print_r($info[1][1]);//5

多维数组

在第二维的数组元素中可以继续是数组,在PHP中没有维度限制(PHP本质并没有二维数组)

异形数组(不规则数组)
异形数组:数组中的元素不规则,有普通基本变量也有数组。
在实际开发中,并不常用,尽量让数组元素规则化(便于进行访问)

数组遍历

1)foreach遍历语法

$arr=array(1,2,3,4,5,6,7,8);
foreach($arr as $v){
    
    
echo $v.'<BR/>';
};

foreach($arr as $k => $v){
    
    
echo $k.'='.$v.'<BR/>';
}

$info = array(
array(1,2,3),
array(4,5,6),
array(7,8,9)
);
foreach($info as $v){
    
    
	echo $v[0].' '.$v[1].' '.$v[2];
	}

2)for循环遍历数组

a r r = a r r a y ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ) ; f o r ( arr=array(1,2,3,4,5,6,7,8); for( arr=array(1,2,3,4,5,6,7,8);for(i = 0, l e n = c o u n t ( len = count( len=count(arr); i < i< i<len;KaTeX parse error: Expected '}', got 'EOF' at end of input: …echo ' key is'.i.’ value is ‘. a r r [ arr[ arr[i].’
’;
}

数组相关函数

1、排序函数
对数组元素进行排序,都是按照ASCII码进行比较,可以进行英文比较
sort():顺序排序(下标重排,下标和值的关系改变)
rsort():逆序排序 (同上)
asort():顺序排序(下标保留,下标和值的对应关系不变)
arsort():逆序排序 (同上)
ksort():顺序排序:按照键名(下标)
krsort():逆序排序:按照键名(下标)
shuffle():随机打乱数组元素,数组下标会重排

$arr=array(1,2,3,4,5,6,7,8);
$a = shuffle($arr);
var_dump($arr);//array(8) { [0]=> int(4) [1]=> int(6) [2]=> int(3) [3]=> int(8) [4]=> int(1) [5]=> int(7) [6]=> int(2) [7]=> int(5) }
sort($arr);
var_dump($arr);//array(8) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [6]=> int(7) [7]=> int(8) }

2、指针函数
reset():重置指针,将数组指针指向首位
end():重置指针,将数组指针指向最后一个元素
next():指针下移,取得下一个元素的值
prev():指针上移,取得上一个元素的值
current():获取当前指针对应的元素值
key():获取当前指针对应的下标值
next和prev会移动指针,有可能导致指针移动到最前或者最后(离开数组),导致数组不能使用,通过next和prev不能回到正确的指针位置。只能通过end或者reset进行指针重置
3、其他函数
count():统计数组中元素的数量
array_push():往数组中加入一个元素(数组最后)
array_pop():从数组中弹出一个元素并返回(数组最后)
array_shift():从数组中弹出一个元素并返回(数组开头)
array_unshift():从数组中加入一个元素(数组开头)

array_reverse():返回单元顺序相反的数组
in_array():判断一个元素在数组中是否存在
array_keys():获取一个数组的所有下标,返回一个索引数组
array_values():获取一个数组的所有值,返回一个索引数组

$a = [];
array_push($a,3);
array_push($a,2);
array_push($a,1);
array_unshift($a,4);
var_dump($a);//array(4) { [0]=> int(4) [1]=> int(3) [2]=> int(2) [3]=> int(1) } 
echo '<br/>';
echo array_pop($a).'<br>';//1
echo array_shift($a).'<br>';//4
var_dump($a);//array(2) { [0]=> int(3) [1]=> int(2) }
echo '<br/>';

var_dump(in_array(3,$a));//bool(true) 
echo '<br/>';
var_dump(array_values($a));//array(2) { [0]=> int(3) [1]=> int(2) } 
echo '<br/>';

猜你喜欢

转载自blog.csdn.net/zhangxm_qz/article/details/108538825