复习PHP基础(数组)

1.PHP数组的定义(array)

(1).PHP数组可存入多个不同类型的数据,是个复合数据类型;
(2).PHP数组是键值对映射关系的数组;
(3).数组元素间分割符号为逗号;
(4).可用count()函数计算一维数组的元素个数。


2.索引数组的定义

(1).索引数组即下标全为整型的数组;
(2).索引数组的下标并不一定要从0开始,若不声明,默认从0开始;
(3).不指定下标的话,下标增长规律为最大值+1。


3.索引数组的增、删、改

(1).向索引数组中增加元素用:数组变量名[键值]这两种方式增加元素;
(2).使用unset()删除变量的方式来删除数组里面的值;
注意:删除了数组里中间的值,并不会让后面元素的下标向前自动移动;
删除掉其中的某个值,新加入的值不会替换掉原来的位置,依然遵循下标最大值+1原则;
(3).用$数组变量名[键] = 新值,即可修改。


4.索引数组的其它声明方式

(1).直接用变量名后面接中括号的方式声明,如:$a[] = '1,2,3,4,5';

(2).传统声明数组,如:a = [1, '123', 5 => 55];


5.关联数组的定义

(1).只要数组里有一个下标为字符串的数组,就为关联数组;
(2).必须要指定字符串的下标,必须使用键值对应符=>;
(3).关联数组的增、删、改与索引数组一样。


6.多维数组的定义

(1).数组里面可以插入数组,一维数组里嵌套一层数组的为二维数组,二维数组里再嵌套一层的为三维数组,三维数组往上统一为多维数组;
(2).访问多维数组需找对键位,即:$a[一维键][二维键]......[n维键]。


7.for循环遍历索引数组,例:

for($i = 0; $i < count($num); $i++){
        echo $num[i];
}

8.foreach遍历关联数组和多维数组,例:

(1).foreach遍历关联数组(用foreach遍历索引数组跟遍历关联数组一样):

$gl = ['a' => 'apple', 'b' => 'banana'];
foreach($gl as $key => $value){
        echo $key.'——'.$value; //也可以只遍历value
}

(2).foreach遍历多维数组:

//设一个多维数组
$dw = [
'a1' => [1 => [1,2,3],
         2 => [1,2,3],
        ],
'a2' => [1 => [1,2,3],
         2 => [1,2,3],
        ]
];
//用foreach把里面的元素全部遍历
foreach($dw as $k1 => $v1){
    foreach($v1 as $k2 => $v2){
        foreach($v2 as $k3 => $v3){
            echo $k1.'-'.$k2.'-'.$k3.'-'.$v3.'
'; //结果样式为:a1-1-0-1(依此类推) } } }

9.list函数声明数组,例:

list($a, $b, $c) = ['aa', 'bb', 'cc'];
//即把右边数组里的元素从右到左逐个赋给变量$a,$b,$c

10.each函数

(1).功能:传入一个数组,它会将其中一个元素拆为一个新数组。每次执行一次操作一个元素,执行一次向后移动一次,同样的方式操作下一个数组元素。执行到最后,返回false。
(2).举个例子,现在我们有一个一维关联数组$a = ['a' => '1', 'b' => '2'],对该数组用一次each()函数并拿一个空数组承接它,然后输出:

$a = ['a' => '1', 'b' => '2'];
$b = each($a);
var_dump($b);

结果为:array(4) { [1]=> string(1) "1" ["value"]=> string(1) "1" [0]=> string(1) "a" ["key"]=> string(1) "a" }。
再执行一次,结果为:array(4) { [1]=> string(1) "2" ["value"]=> string(1) "2" [0]=> string(1) "b" ["key"]=> string(1) "b" }。
也就是说,每次执行each函数,会把数组里的一个键值对拆分,自动生成4个键分别为0、key、1、value;0和key对应被拆的键值对的键,1和value对应被拆的键值对的值。

键值对:                           'a' => '1'
执行each后:         0=>'a', 'key'=>'a', '1'=>'1', 'value'=>'1'

(3).多维数组执行each的拆分过程与上面大体相同,each函数只拆分第一维的键值对。


11.list和each的配合(又是一种数组遍历方法),例:

因为each函数会把数组的键值对拆分成0、key => 被拆分的键,1、value => 被拆分的值;而list函数中第一个变量会去找索引下标为0的元素去赋值,第二个变量会去找索引下标为1的元素去赋值。
也就是说,我们可以用list函数来一次一次的拿到each函数拆分的键值对,那么根据list和each的配合,我们就可以用while循环遍历一个数组:

$a = ['aa' => 11, 'bb' => 22];
while(list($key, $value) = each($a)){
    echo $key.$value;
}

12.PHP常用的操作数组的函数

array_shift($数组变量名):弹出数组中第一个元素;
array_unshift($数组变量名,元素1,...,元素n):在数组开始处压入n个元素;
array_push($数组变量名,元素1,...,元素n):在数组末尾压入n个元素
array_pop($数组变量名):弹出末尾的一个元素;
current($数组变量名):读出指针当前位置的值;
key($数组变量名):读出指针当前位置的键;
next($数组变量名):指针向后移一位;
prev($数组变量名):指针向前移一位;
reset($数组变量名):指针移至开始处;
unset($数组变量名):销毁数组。

后面还有一大堆php数组的常用函数。。先mark一下吧。。
array_combine() 生成一个数组,用一个数组的值作为键名,另一个数组值作为值
range() 创建并返回一个包含指定范围的元素的数组。
compact() 创建一个由参数所带变量组成的数组
array_fill() 用给定的值生成数组
array_chunk() 把一个数组分割为新的数组块
array_merge() 把两个或多个数组合并为一个数组
array_slice() 在数组中根据条件取出一段值,并返回
array_diff() 返回两个数组的差集数组
array_search() 在数组中搜索给定的值,如果成功则返回相应的键名
array_splice() 把数组中的一部分去掉并用其它值取代
array_sum() 计算数组中所有值的和
in_array() 检查数组中是否存在某个值
array_key_exists() 检查给定的键名或索引是否存在于数组中
shuffle() 将数组打乱,保留键值
count() 计算数组中的单元数目或对象中的属性个数
array_flip() 返回一个键值反转后的数组
array_keys() 返回数组所有的键,组成一个数组
array_values() 返回数组中所有值,组成一个数组
array_reverse() 返回一个元素顺序相反的数组
array_count_values() 统计数组中所有的值出现的次数
array_rand() 从数组中随机抽取一个或多个元素,注意是键名
array_unique() 删除重复值,返回剩余数组
sort() 按升序对给定数组的值排序,不保留键名
rsort() 对数组逆向排序,不保留键名
asort() 对数组排序,保持索引关系
arsort() 对数组逆向排序,保持索引关系
ksort() 按键名对数组排序
krsort() 将数组按照键逆向排序
natsort() 用自然顺序算法对数组中的元素排序
natcasesort() 自然排序,不区分大小写
array_filter() 去掉数组中的空元素或者预定元素
extract 将键变为变量名,将值变为变量值

你可能感兴趣的:(复习PHP基础(数组))