1、数组

索引数组:索引值是整数
关联数组:索引值是字符串

2、数组的定义

1、以直接赋值的方式声明
$数组名[下标]=资料内容


$数组名[关联字符串(键值)]=资料内容

<?php
$val[0]="zhangsan";
$val[1]="lisi";
$val2['name']="wanger";
$val2['age']=33;$val3[]='fujian';
$val3[]='beijing';
$val3[]='jiangxi';foreach ($val3 as $v){echo $v.'<br>';
}echo $val3[2];
echo '<br>';
$val4[]='fujian';
$val4[10]='beijing';
$val4[]='jiangxi';
echo $val4[11];
?>

2、以array()语言结构新建数组
$数组名=array(key1=>value1,key2=>value2,key1=>value2)

$数组名=array(value1,value2,value2)

$数组名=array(value1,key2->value2,value2)

范例略

3、简化写法
$数组名=[value1,value2,value3]

3、多维数组的声明

一位数组元素的位置以匿名的形式声明
$数组名=array(array(value11,value12,…),array(value21,value22,…)

$数组名=【[value11,value12,…],[value21,value22,…]】

$数组名=array(
‘一维数组名’=>array(value1,value2,…),
‘一维数组名’=>array(value21,value22,…),
‘一维数组名’=>array(value31,value32,…),
)

4、数组遍历

1、for语句遍历
使用了count对数组计数

<?php
$myarray=['zhangsan','lisi','wanger'];
for($i=0;$i<count($myarray); $i++){echo $myarray[$i].'<br/>';
}
?>

2、list(),each(),while遍历
each()已过时,不建议用

<?php
$myarray=['zhangsan','lisi','wanger'];
while(list($k,$v)=each($myarray)){echo $v.'<br>';
}
?>

list()函数接受一个数组,但不同于其他函数传参,list函数传参使用等号=,将一个数组赋值个这个函数

<?php
$myarray=['zhangsan',34,'beijing'];
list($name,$age,$address)=$myarray;
echo $name."--".$age.'--'.$address;
?>

3、foreach语句遍历
两种结构

foreach (数组名 as $k=>$v)
或
foreach (数组名 as $v)
$myarray=['zhangsan',34,'beijing'];
foreach ($myarray as $k=>$v){echo $k.'--'.$v.'<br>';
}
foreach ($myarray as $v){echo $v.'<br>';
}
?>

5、使用数组内部指针控制函数遍历数组

这些函数的参数只有一个,就是数组本身

  • current:取得目前指针位置的所指向元素
  • key:读取目前指针所指向资料的索引值
  • next:将数组中的内部指针移动到下一个单元格
  • pre:将数组的内部指针倒回一位
  • end:将数组的内部指针指向最后一个元素
  • reset:将目前指针无条件移到第一个索引位置
<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);echo '第一个元素:'.key($myarray).'--'.current($myarray).'<br>';
next($myarray);
next($myarray);
echo '第三个元素:'.key($myarray).'--'.current($myarray).'<br>';
prev($myarray);
echo '第二个元素:'.key($myarray).'--'.current($myarray).'<br>';
end($myarray);
echo '第六个元素:'.key($myarray).'--'.current($myarray).'<br>';
reset($myarray);
echo '第一个元素:'.key($myarray).'--'.current($myarray).'<br>';
?>

6、预定义数组

在全局范围内生效,不用使用global关键字

$_SERVER
$_ENV
$_GET
$_POST
$_REQUEST
$_FILES
$_COOKIE
$_SESSION
$GLOBALS

略,需要去查手册知道具体每个数组的意思,

7、数组的相关处理函数–数组的键值操作函数

1、array_values()获取键值数组
返回数组的值作为一个数组

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);$newArray=array_values($myarray);
foreach ($newArray as $value){echo $value.'<br>';
}
?>

2、array_keys()获取键名数组
返回数组的键作为一个数组

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);$newArray=array_keys($myarray);
foreach ($newArray as $value){echo $value.'<br>';
}
?>

3、array_reverse()反序数组
数组顺序反转并创建新数组

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);
foreach ($myarray as $value){echo $value.'<br>';
}
$newArray=array_reverse($myarray);
foreach ($newArray as $value){echo $value.'<br>';
}
?>

4、in_array()搜索键值
in_array(数组中搜索的值,数组名,true|false)

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);
echo in_array("fengray", $myarray,true)
?>

5、array_flip()反转键值
反转键值

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);
$newArray=array_flip($myarray);
foreach ($myarray as $k=>$v){echo $k.'--'.$v.'<br>';
}foreach ($newArray as $k=>$v){echo $k.'--'.$v.'<br>';
}
?>

8、数组的相关处理函数–统计数组个数及唯一性

1、count函数计数

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);
echo count($myarray);
?>

2、array_count_value()统计数组中所有值出现的次数
生成新数组,其中键名为原数组中不重复的值,键值为出现的次数

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","name"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);
$newArray=array_count_values($myarray);
foreach ($newArray as $k=>$v){echo $k.'---'.$v.'<br>';
}

3、array_unique()删除数组重复值
删除数组中重复值,并返回没有重复值的新数组

<?php
$myarray=array("id"=>1,"name"=>"zhangsan","company"=>"fengray","name"=>"fengray","address"=>"beijing","tel"=>"5070","email"=>"zhangsna@12.com",
);
$newArray=array_unique($myarray);
foreach ($newArray as $k=>$v){echo $k.'---'.$v.'<br>';
}
?>

9、数组的相关处理函数–使用回调函数处理数组的函数

1、array_filter()按照自定义函数过滤数组中的值
包含两个参数
第一个参数是被过滤的数组
第二个参数是用来过滤数组的自定义工具函数,用双引号传入函数名

执行过程
实际执行过程就是,取被过滤数组的每一个元素,进入自定义工具函数中,经过处理后,按自定义函数的逻辑返回true或false,true,则将当前值保留在新数组中,false则不保留,最后生成新数组。

格式:
array_filter(数组名,“自定义工具函数名”);

<?php
$myarray=[1,2,3,4,5,6,7,8,9,10];
function myfun($element){if($element%2==0){//过滤偶数return true;}
}$newArray=array_filter($myarray,"myfun");foreach ($newArray as $value){echo $value.'<br>';
}
?>

2、array_walk()对数组的每个元素应用回调函数

两个必选参数,一个可选参数

  • 第一个参数是被遍历的数组
  • 第二个参数是用来处理数组元素的自定义函数(回调函数),自定义函数应当接受两个参数,第一个参数是数组值,第二个参数是数组键名
  • 第三个参数是可选的参数,也是传给自定义函数的第三个参数。

格式
array_walk(被遍历函数,“自定义函数名”,自定义函数的第三个参数)

<?php
$myarray=array("name"=>"zhangsan","age"=>45,"address"=>"beijing","email"=>"zhangsan@126.com"
);function myfun($value,$key){echo "here is value of ".$value." and hre is key of ".$key."<br/>";
}$newArray=array_walk($myarray,"myfun");
?>

打印出:
here is value of zhangsan and hre is key of name
here is value of 45 and hre is key of age
here is value of beijing and hre is key of address
here is value of zhangsan@126.com and hre is key of email

带有三个参数的例子

<?php
$myarray=array("name"=>"zhangsan","age"=>45,"address"=>"beijing","email"=>"zhangsan@126.com"
);function myfun($value,$key,$sententce){echo "here is value of ".$value.$sententce.$key."<br/>";
}$newArray=array_walk($myarray,"myfun"," and here is the key of ");
?>

打印:
here is value of zhangsan and here is the key of name
here is value of 45 and here is the key of age
here is value of beijing and here is the key of address
here is value of zhangsan@126.com and here is the key of email

3、array_map()同上,但可以处理多个数组
处理多个数组,将回调函数作用在给定数组的元素上,并且返回自定义作用后的新数组。
array_map是任意参数列表函数,回调函数接受的参数数目,应该和传递个array_map()函数的数组数目一直。

两个参数

  • 第一个参数是自定义回调函数的名称
  • 第二个参数是需要处理的数组

处理一个数组的时候

function fun1($v){if ($v==="Oracle"){return "Rracle";}return $v;
}
$myarray=array("linux","Apache","MySql","PHP");
$newArray=array_map("fun1",$myarray);//将数组挨个遍历放入自定义函数中处理生成新的数组print_r($newArray);?>

打印:
Array ( [0] => linux [1] => Apache [2] => MySql [3] => PHP )

处理2个数组的时候

<?phpfunction fun1($a,$b){if ($a===$b){return "same";}return "diffrent";
}
$arraya=array("linux","Apache","MySql","PHP");
$arrayb=array("MacOS","Apache","Oracle","PHP");$newArray=array_map("fun1",$arraya,$arrayb);//遍历数组的元素,将其作为自定义函数的参数进行处理处理生成新的数组print_r($newArray);?>

打印:

Array ( [0] => diffrent [1] => same [2] => diffrent [3] => same )

回调函数为null的时候的时候
自定义的回调函数为null的时候则将,多个数组拼接成一个多维数组

<?php
$arraya=array("linux","Apache","MySql","PHP");
$arrayb=array("MacOS","Apache","Oracle","PHP");$newArray=array_map(null,$arraya,$arrayb);//将数组挨个遍历放入自定义函数中处理生成新的数组print_r($newArray);?>

打印:
Array ( [0] => Array ( [0] => linux [1] => MacOS ) [1] => Array ( [0] => Apache [1] => Apache ) [2] => Array ( [0] => MySql [1] => Oracle ) [3] => Array ( [0] => PHP [1] => PHP ) )

10、数组的排序函数-概述

  • sort:小到大
  • resort:大到小
  • usort:自定义排序
  • asort小到大并保持索引
  • uasort:大到小并保持索引
  • ksort:键名排序,保留原来的键
  • uksort:大到小逆向排序,保留原来的键
  • natsort自然顺序算法排序
  • natcasesort:不区分大小写的自然顺序算法排序
  • array_mulsisort:多个数组或多维数组排序

11、数组的排序函数

1、简单的数组排序函数sort(),resort()
格式
sort(排序数组,flag)
resort(排序数组,flag)反序

两个参数
第一个是排序的数组,
第二个参数是排序方式flag,可以为如下值
SORT_REGULAR:自动识别
SORT_NUMRIC
SORT_STRING
SORT_LOCALE_STRING

不会生成新的数组

<?php
$myarr=[3,5,62,3,"hello",56,78,9];sort($myarr);
print_r($myarr);
?>

2、根据键名对数组排序ksort(),kresort()

<?php
$myarr=[3,5,62,3,"hello",78,9];ksort($myarr);
print_r($myarr);
?>

3、根据键值对数组排序asort(),aresort()

<?php
$myarr=[3,5,62,3,"hello",78,9];asort($myarr);
print_r($myarr);
?>

4、自然排序法natsort(),natcasesort()自然排序不分大小写

$myarr=[3,5,62,3,"hello",78,"HELLO"];natcasesort($myarr);
print_r($myarr);
?>

5、usort(),uasort(),uksort()用户自定义规则排序
usort(被排序数组名,“自定义排序函数名”)
自定义排序返回1,0,-1用来决定是升序,不变,降序
被排序数组被依次遍历,两两作为自定义排序函数的参数来使用

<?php
$myarr=["linux","php","mysql","vue"];function mysort($one,$two){if(strlen($one)==strlen($two)){return 0;}else{return strlen($one)>strlen($two)?-1:1;}
};
print_r($myarr);
echo "<br>";
usort($myarr,"mysort");
print_r($myarr);
?>

打印:
Array ( [0] => linux [1] => php [2] => mysql [3] => vue )
Array ( [0] => linux [1] => mysql [2] => php [3] => vue )

6、array_multisort()多维数组的排序
array_multisort("第一排序数组名”,“第二排序数组名”,“第三排序数组名”)
实在不想搞清楚

12、拆分,合并,分解和接合数组

1、array_slice()函数截取数组元素

array_slice(拆分的数组,开始位置,截取元素个数,true|false是否保留键名)

会生成新数组

<?php
$myarr=["linux","php","mysql","vue","mysql","vue","mysql","vue"];$newArray=array_slice($myarr,2,4,false);
print_r($newArray);
?>

2、array_splice()函数移除数组元素(移除后或可用新元素替换移除部分)
array_splice(拆分的数组,开始位置,截取元素个数,true|false是否保留键名)

仅仅移除

<?php
$myarr=["linux","php","mysql","vue","mysql","vue","mysql","vue"];
print_r($myarr);
echo "<br>";
$newArray=array_splice($myarr,2,4);
print_r($myarr);
?>

移除后再填补

<?php
$myarr=["linux","php","mysql","vue","mysql","vue","mysql","vue"];
$myarr2=["zhangsan","lisi","wanger","zhaoliu","maba"];
print_r($myarr);
echo "<br>";
$newArray=array_splice($myarr,2,4,$myarr2);
print_r($myarr);
?>

3、array_combine()函数合并数组
将两个数组合并,一个做键名,一个昨键值。如果一个为空或两个元素个数不同,则该函数返回false

<?php
$myarr=[1,3,4,6];
$myarr2=["zhangsan","lisi","wanger","zhaoliu"];$newArray=array_combine($myarr,$myarr2);
print_r($newArray);
?>

4、array_intersect()函数获得交集数组
返回多个数组的交集,生成新数组,仅仅是值一致的交集,键名保持不眠

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];
$myarr2=["zhangsan","lisi","wanger","zhaoliu"];$newArray=array_intersect($myarr,$myarr2);
print_r($newArray);
?>

5、array_merge()函数合并数组
多个数组合并为一个数组,如果键名重复,则值为最后一个键名对应的键值。
传入的多个数组必须数组元素类型一致

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];
$myarr2=["zhangsan","lisi","wanger","zhaoliu"];$newArray=array_merge($myarr,$myarr2);
print_r($newArray);
?>

6、array_diff()函数返回两数的差集

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];
$myarr2=["zhangsan","lisi","wanger","zhaoliu"];$newArray=array_diff($myarr,$myarr2);
print_r($newArray);
?>

13、数组与数据结构-使用数组实现堆栈

1、先进先出队列push,pop,始终操作最后一个元素
array_push:压栈,装入一个元素
array_pop:出栈:删除一个元素

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];array_push($myarr,"wangwu","maba");
print_r($myarr);
?>

2、后进先出队列array_shift()删除第一个元素,array_unshift()在开头插入一个或多个元素,始终操作最早一个元素
格式:
array_shift(“数组名”)
array_shift(“数组名”,“第一个元素”,“第二个元素”…)

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];array_shift($myarr);
print_r($myarr);
?>

开头加一个数组,一个或多个元素都可以

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];
$myarr2=[2,3,4];array_unshift($myarr,"maba","lisi");
array_unshift($myarr,$myarr2);
print_r($myarr);
?>

14、随机选取元素

1、array_rand()随机选取一个或多个元素的键名
array_rand(操作数组,元素数量)
第一个参数为数组
第二个参数为取出元素的数量
会生成新数组
只取键名,不取数量

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];$newAaary=array_rand($myarr,3);//新数组仅仅存放了随机取出来的键名
foreach ($newAaary as $value){echo $myarr[$value]."<br>";
}
?>

2、array_shuffle()随机打乱数组元素的顺序
随机打乱数组元素的顺序不生成新的数组

<?php
$myarr=["zhangsan","sunqi","laoliu","zhaoliu"];shuffle($myarr);
foreach ($myarr as $value){echo $value."<br>";
}
?>

3、array_sum()数组求和
对数组求和,返回一个总和值

<?php
$myarr=[3,4,5,6];$sum=array_sum($myarr);
echo $sum;
?>

4、range()创建新数组
range(数组元素最小值,数组元素最大值,步长默认1)

<?php
$myarr=range(5,54,2);
print_r($myarr);
?>

15、PHP数组操作细节

1、+运算符
两个数组相加合并,下标相同的会被前一个数组覆盖

2、unset()删除数组中任意位置的元素
格式:
unset(数组名[索引])

删除元素后,数组不会重建索引

<?php
$myarr=[3,4,5,6];unset($myarr[2]);
print_r($myarr);
?>

如果需要重建索引,使用array_values(数组名),并生成新数组

<?php
$myarr=[3,4,5,6];unset($myarr[2]);
print_r($myarr);
echo "<br>";
$newArray=array_values($myarr);
print_r($newArray);
?>

打印:
Array ( [0] => 3 [1] => 4 [3] => 6 )
Array ( [0] => 3 [1] => 4 [2] => 6 )

细说PHP笔记03(第7章)--数组与数据结构,数组定义,数组遍历,数组内部指针遍历,键值操作函数,统计数组函数,回调函数处理数组元素,数组排序,拆分、合并、分解、结合数组,数组实现堆栈,随机选取元素相关推荐

  1. 如何统计php数组值的和,php数组键值操作和数组统计函数-函数

    1.数组函数//作用:提供了很多官方写的很多有用的代码段,提高编写速度 1)数组的键值操作函数 array_values();//获取数组中的值 array_keys();//获取数组中的键 in_a ...

  2. bool类型数组转换成一个整数_「PHP」常用的数组键值操作函数,面试重点

    数组键值操作函数 1.array_values ( array $array ) : array 返回数组中所有的值的数组 $a=['name'=>'jikeshiguangji','age'= ...

  3. 很简单的Python小程序:使用random库 实现随机选取元素

    最近在自学python 正好组织游戏比赛能用到,就写了个随机抽选元素的代码,打个包就可以给别人用了 以下是源码 也有大佬指导我加上选兵种数量的功能,我搞了半天总是影响概率,就没搞.. 至少我现在这个概 ...

  4. Go 学习笔记(71)— Go 接口 interface (接口定义、接口实现、接口调用、值接收者、指针接收者)

    1. 接口的定义 接口是和调用方的一种约定,它是一个高度抽象的类型,不用和具体的实现细节绑定在一起.接口要做的是定义好约定,告诉调用方自己可以做什么,但不用知道它的内部实现,这和我们见到的具体的类型如 ...

  5. Javascript第四章定义函数的形式、回调函数第五课

    两者的区别: 第一种方法:函数声明在编写时可以先调用,再声明: 第二种方法:函数表达式必须先定义,再调用 更多免费教学文章请关注这里 函数的回调 主要的理解: 当用户用的时候,不是直接触发的状态,当他 ...

  6. php数组实现堆栈的三个函数,while,do while,s函数的参数作用域,数组堆栈,常见的数组函数等学习2018/8/23...

    1,while do while 使用 实例 /** * while 和do while使用 */ $sum=0; $i=0; while ($i<=100) { $sum=$sum+$i; $ ...

  7. php 按照相同键值分组合并数组

    //按照相同键值分组合并数组 $arr = [];//定义一个空数组 foreach ($date_info as $key => &$value) {//$date_info为需要合并 ...

  8. 07-PHP中的数组与数据结构

    文章目录 数组 学习目标 声明 数组的删除 多维维数组 数组的遍历 使用for语句循环遍历数组 使用foreach语句遍历数组 联合使用list().each().和while循环遍历数组 `list ...

  9. php数组foreach循环添加键值对_php 给数组增加键值对

    php给数组增加键值对的方法:首先创建一个PHP示例文件:然后使用foreach语句为数组增加键值对即可,其语句如"foreach ($a as &$item) {$item['b' ...

最新文章

  1. linux insight 使用教程,Insight API开源项目分析
  2. 自我评价中专计算机600作文,自我评价作文600字
  3. 第四章课后习题及答案
  4. javascript调试常用工具讲解
  5. mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据
  6. 韩媒体:900万人个人信息被非法泄露到中国
  7. 报错盲注之exp注入(double数值类型溢出原理详解)
  8. 字节跳动 AI Lab 21届校招启动啦!
  9. sklearn——model_selection——knn手写识别系统+iris分类
  10. JEP:Java表达式分析器
  11. 数据库周刊45丨易鲸捷4.2亿订单创记录;10月Oracle补丁发布;巨杉SequoiaDB v5.0发布;MySQL卡死案例……
  12. 资深3D游戏建模师的酸甜苦辣
  13. Excel如何将两列内容一致但是行顺序不同的数据进行匹配(详细方法)
  14. 单引号在c语言中作用,我想知道单引号在C语言的具体作用
  15. alt+w热键组合无法使用
  16. 【计算机网络学习笔记02】计算机网络概述(中)
  17. 极坐标可以用计算机吗,极坐标(怎么用计算器计算极坐标)
  18. 项目中使用 husky 配合 lint-staged 进行git提交前代码检查
  19. hadoop性能优化(调优)
  20. 横向扩展与纵向扩展区别详解

热门文章

  1. vnote中graphviz与plantuml的安装与配置
  2. 抖音运营必看的7种玩法和9个类目定位
  3. 谷粒商城 高级篇 (十七) --------- 单点登录
  4. linux下tomcat的安装
  5. 数控自动编程的内容与步骤
  6. 最新科研之《计算机视觉的展望及其观点》(小朱翻译)
  7. 浏览器查看代号及版本号信息
  8. 培训机构不退费怎么办?中创教育建议用法律武器维权
  9. Linux进程间通信详解(三) —— 消息队列及函数
  10. nodejs爬虫——汽车之家所有车型数据