复习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 = array(1, '123', 5 => 55); 也可以不用写array: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.'</br>';
          //结果样式为: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 将键变为变量名,将值变为变量值

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容

  • 一、数组定义 array() 1、索引数组 在一个变量中,存储一个或多个值。数组中的每一个元素都有一个访问ID,根...
    竹与豆阅读 526评论 0 0
  • 数组的概述 PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方...
    dptms阅读 1,602评论 0 4
  • 大家不要吐槽我写的乱,其实是简书的markdown编辑器有问题,看内容感觉写的很乱。我联系过简书的技术人员,连我理...
    Airmole阅读 957评论 0 4
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,362评论 0 20
  • 用户害怕犯错 有一次在产品壹佰上投稿,因为找不到把文章同步到第三方平台的工具,只能自己手动复制粘贴,终于将格式调整...
    Yumi玉米大人阅读 137评论 0 0