1.创建类及类对象
<?php
class Dog{}
class Cat{}
$cat1=new Cat;
var_dump($cat1 instanceof Cat);
?>
结果:
bool(true)
2.导入自定义函数文件
1、创建函数文件func.php
<?php
function printme($number){
for ($i=0; $i <$number ; $i++) {
echo "string".$i;
echo "<br/>";
if ($i%2==0) {
continue ;
}
echo "<hr/>";
}
}
?>
2、在主文件中导入该php文件
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<?php
require "func.php";
printme(5);
?>
<font color="red">zhangsan</font>
<hr>
</body>
</html>
结果:
string0
string1
string2
string3
string4
zhangsan
3.php文件相互调用
<?php
require "func.php";
require $filepath;
require("func.php");
printme(5);
?>
4.require和include的区别
require出错后悔中断执行
include出错后不中断,会继续执行
5.定义常量
方法一:define
<?php
define("SAYHIGH","good morning");
echo SAYHIGH;
?>
方法二:const关键字并赋值
<?php
const SAYHIGH="good afternoon";
echo SAYHIGH;
?>
5.定义数组并遍历
方式一:
$myarray [0]=1;
$myarray [1]=null;
$myarray [2]=3.5;
$myarray [3]=4;
$myarray [4]="hello";
for ($i=0; $i <count($myarray); $i++) {
echo $myarray[$i]."<br/>";
}
结果:
1
3.5
4
hello
方式二:
<?php
$myarray=array(1,"hello",3.2,90);
for ($i=0; $i <count($myarray); $i++) {
echo $myarray[$i]."<br/>";
}
?>
结果:
1
hello
3.2
90
方式三:自己指定数组下标
<?php
$myarray=array("name" => "zhangsan", "age" => 12, "address" => "beijing");
foreach ($myarray as $value) {
echo $value."<br/>";
}
echo "*****<br/>";
foreach ($myarray as $key=> $one) {
echo $key." ".$one."<br/>";
}
?>
结果:
zhangsan
12
beijing
name zhangsan
age 12
address beijing
6.数组元素下标替换
如果创建数组的时候给定了某个元素的key值,后续的元素下标一次增大
<?php
$myarray=array(34,5 => "zhangsan", 12, "beijing");
echo $myarray[0]."<br/>";
echo $myarray[5]."<br/>";
echo $myarray[6]."<br/>";
echo $myarray[7]."<br/>";
?>
结果:
34
zhangsan
12
beijing
7.直接打印数组值print_r和var_dump
<?php
$myarray=array(34,5 => "zhangsan", 12, "beijing");
print_r($myarray);
echo "<br/>";
var_dump($myarray);
echo is_array($myarray);
?>
结果:
Array ( [0] => 34 [5] => zhangsan [6] => 12 [7] => beijing )
array(4) { [0]=> int(34) [5]=> string(8) “zhangsan” [6]=> int(12) [7]=> string(7) “beijing” }
1
8.拆分字符串
<?php
$huan="<br/>";
$myString="张三 李四 王五 赵六";
echo $myString;
$newArray=explode(" ", $myString);
echo $huan;
foreach ($newArray as $value) {
echo $value.$huan;
}
echo $huan;
print_r($newArray);
?>
结果:
张三 李四 王五 赵六
张三
李四
王五
赵六
Array ( [0] => 张三 [1] => 李四 [2] => 王五 [3] => 赵六 )
另一种分隔符
<?php
$huan="<br/>";
$myString="张三--李四--王五--赵六";
echo $myString;
$newArray=explode("--", $myString);//第一个参数是分隔符
echo $huan;
foreach ($newArray as $value) {
echo $value.$huan;
}
echo $huan;
print_r($newArray);
?>
结果:
张三–李四–王五–赵六
张三
李四
王五
赵六
Array ( [0] => 张三 [1] => 李四 [2] => 王五 [3] => 赵六 )
9.使用unset()删除数组的键值
unset()可以销毁数组某个元素,也可以销毁变量
<?php
$huan="<br/>";
$myArray=array(1,3,5,7,9);
print_r($myArray);
echo $huan;
unset($myArray[3]);
print_r($myArray);
?>
结果:
Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 7 [4] => 9 )
Array ( [0] => 1 [1] => 3 [2] => 5 [4] => 9 )
10.定义多维数组
<?php
$huan="<br/>";
$myArray=array(array(1,2,3),array(4,5,6),array(7,8,9));
for ($i=0; $i <count($myArray) ; $i++) {
for ($j=0; $j <count($myArray[$i]) ; $j++) {
echo $myArray[$i][$j]." ";
}
echo $huan;
}
?>
结果:
1 2 3
4 5 6
7 8 9
11.创建一个表格绘制函数
<?php
$huan="<br/>";
$dataArray=array(array("chinese","advertisement","administrator"),array("law","finantial","electic"),array("news","communication","math"));
function drawTable($dataArray){
echo "<table border=1>";
for ($i=0; $i <count($dataArray) ; $i++) {
echo "<tr>";
for ($j=0; $j <count($dataArray[$i]) ; $j++) {
echo "<td>".$dataArray[$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
}
drawTable($dataArray);
?>
结果:
第二个例子
<?php
$huan="<br/>";
//创建一个二维数组
function createArray($row,$col){
$dataArray=null;
for ($i=0; $i <$row ; $i++) {
for ($j=0; $j <$col ; $j++) {
$dataArray[$i][$j]=$i.$j;
}
}
return $dataArray;
}
//绘制一个二维数组填充的表格
function drawTable($dataArray){
echo "<table border=1>";
for ($i=0; $i <count($dataArray) ; $i++) {
echo "<tr>";
for ($j=0; $j <count($dataArray[$i]) ; $j++) {
echo "<td>".$dataArray[$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
}
drawTable(createArray(4,6));
?>
12.静态变量
我理解实际上达到了全局变量的效果,常驻内存
<?php
$huan="<br/>";
function mystatic(){
static $mysum=0;
$mysum++;
echo $mysum."<br/>";
}
mystatic();
mystatic();
mystatic();
mystatic();
?>
结果:
1
2
3
4
13.地址引用
第一个例子
<?php
$huan="<br/>";
$myvar="hello";
$urvar=&$myvar;
$urvar="world";
echo $myvar.$huan;
echo $urvar.$huan;
?>
结果:
world
world
第二个例子
<?php
function test(&$temp){
$temp=300;
}
$value=100;
test($value);
echo $value;
?>
结果:
300
**ps:**如果在函数的形参中有使用&修饰的参数,在调用该函数时就必须传入一个变量给这个参数,而不能传递一个值。
14.带默认参数的函数
<?php
function showinfo($name="张三",$age=15,$address="北京"){
echo "我的名字叫{$name},我现在{$age}岁了,我居住在{$address}<br/>";
}
showinfo("王五");
showinfo("赵六",34);
showinfo("洪七",89,"天南海北");
?>
结果:
我的名字叫王五,我现在15岁了,我居住在北京
我的名字叫赵六,我现在34岁了,我居住在北京
我的名字叫洪七,我现在89岁了,我居住在天南海北
15.可变参数函数
第一个例子
<?php
function kebian(){
$dataArray=func_get_args();//获得可变个数的参数组成的数组
for ($i=0; $i <count($dataArray) ; $i++) {
echo "第".$i."个参数为:".$dataArray[$i]."<br/>";
}
}
kebian("zhangsan",34,"beijing");
?>
结果是:
第0个参数为:zhangsan
第1个参数为:34
第2个参数为:beijing
第二个例子
<?php
function kebian(){
for ($i=0; $i <func_num_args() ; $i++) { //获得可变个数的参数组成的数组的参数数目
echo "第".$i."个参数为:".func_get_args() [$i]."<br/>";
}
}
kebian("zhangsan",34,"beijing");
?>
结果:
第0个参数为:zhangsan
第1个参数为:34
第2个参数为:beijing
16.回调函数
格式:mixed funName(callback arg)
在参数列表中使用伪类型callback描述
所谓的回调函数,就是指调用函数时,并不是一个传递标准的变量作为参数,而是将一个函数作为参数传递到调用的函数中。实际上就是将一个用户定义的执行过程传递到函数中使用,大大增强了用户对函数功能的扩展
17.回调函数–变量函数
也叫可变函数,如果一个变量名后有圆括号,php将寻找与变量的值同名的函数,并且将尝试执行她。如声明一个函数test(),将函数名称字符串test付给变量 $ demo(),则为调用对应$demo 变量值test函数。这样可以将不同的函数名称赋值给同一个变量,再通过变量去调用这个函数。类似于面向对象中多台特性的应用(重写)。
<?php
function longfun($a,$b){
return $a+$b;
}
function squrefun($a,$b){
return $a*$b;
}
function cubefun($a,$b,$c){
return $a*$b*$c;
}
$myDemo="cubefun";//带双引号的赋值,实际并不是赋值一个字符串
//$myDemo="squrefun";//传哪个值就调用哪个函数
//$myDemo="cubefun";//类似于重写
echo $myDemo(6,5,3)."<br>";//接收到那个函数名的值,就调用哪个函数
?>
结果:
90
18.回调函数–使用变量函数声明和应用回调函数
在定义回调函数时,函数的声明结构没有变化,只要声明的参数是一个普通变量即可。但在函数的内部,应用这个参数变量时,如果加上圆括号就可以调用到和这个参数值同名的函数了,所以作为其传递的参数一定要是另一个函数名称字符串才行。
使用回调函数的目的是可以将一段自定义的功能传到函数内部使用。
<?php
/*
声明回调函数filter,在0-10的整数中通过自定义条件过滤掉不要的数字
需要传递一个函数名称字符串作为参数
*/
function filter($fun){
for ($i=0; $i <=10 ; $i++) {
//将参数变量$fun加上一个圆括号$fun(),则为调用变量$fun值同名的函数
if ($fun($i)) {
echo $i."<br/>";
}
}
}
/*
声明一个函数one
*/
function one($num){
return $num%3==0;
}
/*
声明一个函数two
*/
function two($num){
return $num%2==0;
}
filter("one");//参数是与函数同名的字符串,实际是调用了one函数
echo "*************<br>";
filter("two");//参数是与函数同名的字符串,实际是调用了two函数
?>
结果:
0
3
6
9
0
2
4
6
8
10
19.回调函数–借助call_user_func_array()函数自定义回调函数
call_user_func_array()是php的内置函数,格式如下
mixed call_user_func_array(callback function, array param_arr)
该函数有两个参数
第一个参数因为使用伪类型callback,所以这个参数需要一个字符串,表示要调用的函数名
第二个参数是一个数组类型参数,表示参数列表,按照顺序依次传递给要调用的函数
<?php
/*
声明回调函数fun,输出两个字符串,目的是作为call_usr_func_array()回调函数的参数
需要传递一个函数名称字符串作为参数
*/
function fun($msg1,$msg2){
echo "smg1:".$msg1."<br/>";
echo "smg2:".$msg2;
}
/*
通过系统函数call_user_func_array()调用fun()
第一个参数为函数fun()的名称字符串
第二个参数则是一个数组,每个元素值会按顺序传递给调用的fun()函数参数列表
*/
call_user_func_array("fun", array("北京市","海淀区"));
结果是:
smg1:北京市
smg2:海淀区
用call_user_func_array()改造第18例
<?php
function filter($fun){
for ($i=0; $i <=10 ; $i++) {
//将参数变量$fun加上一个圆括号$fun(),则为调用变量$fun值同名的函数
if(call_user_func_array($fun, array($i))){//第一个参数是函数名而不是字符串
echo $i."<br>";
}
}
}
function one($num){
return $num%3==0;
}
filter("one");//在这里才使用字符串调用函数
?>
结果:
0
3
6
9
20.类静态函数和对象的回调,也是使用call_user_func_array()函数
使用时,其两个参数为
第一个参数:数组类型的参数(之前是函数名称字符串)
对于静态方法回调:其中数组中第一个元素为类名称,第二个元素为静态方法名称字符串
对于对象方法回调:其中数组中第一个元素为对象,第二个元素对象方法名称字符串
第二个参数:静态方法或对象方法的参数列表数组
<?php
class Demo{
static function fun($msg1,$msg2){
echo "msg1=".$msg1." msg2=".$msg2;
}
}
class Test{
function fun($msg1,$msg2){
echo "msg1=".$msg1." msg2=".$msg2;
}
}
/*
通过系统函数call_user_func_array()调用Demo类中的静态成员方法fun()
回调类中的成员方法:第一个参数必须使用数组,并且这个数组需要指定两个元素
第一个参数的第一个元素为类名称字符串,第二个元素则是该类中的静态方法名称字符串。
第二个参数是一个数组,这个数组中的每个元素值会按顺序传递给调用Demo类中的fun()方法参数列表
*/
call_user_func_array(array("Demo","fun"), array("北京市","海淀区"));
echo "<br/>";
/**
* 通过系统函数call_user_func_array()调用Demo类中实例对象的成员方法fun()
* 调类中的成员方法:第一个参数必须使用数组,并且这个数组需要指定两个元素
第一个参数的第一个元素为对象引用,可以使用现成的对象,也可以new一个对象,第二个元素则是该类中实例对象成员方法名称字符串。
第二个参数是一个数组,这个数组中的每个元素值会按顺序传递给调用对象实例中的fun()方法参数列表
*/
call_user_func_array(array(new Test(),"fun"),array("深圳市","南山区"));
?>
结果是:
msg1=北京市 msg2=海淀区
msg1=深圳市 msg2=南山区
回调函数的说明格式总结如下
- callback(“回调函数名称字符串”)
- callback(array(“类名称字符串”,“类中静态方法名称字符串”)
- callback(array(对象引用,“类中静态方法名称字符串”)
21.递归函数
<?php
function test($n){
echo $n." ";
if ($n>0) {
test($n-1);
}else{
echo "****";
}
echo $n." ";
}
test(10);
结果:
10 9 8 7 6 5 4 3 2 1 0 ****0 1 2 3 4 5 6 7 8 9 10
这里一定要有一个结束递归的一个判断条件才可以
22.数组两种定义方式
- 直接为数组元素赋值
- 使用array()函数声明数组
<?php
//方法一
$myarray[0]="beijing";
$myarray[1]="shanghai";
$myarray[2]="shenzhen";
print_r($myarray);
echo "<br/>*******<br/>";
//方法二
$myarray2=array("jiangxi","hunan","guangdong");
print_r($myarray2);
?>
结果:
Array ( [0] => beijing [1] => shanghai [2] => shenzhen )
Array ( [0] => jiangxi [1] => hunan [2] => guangdong )
23.混合下标指定元素并使用forecach遍历
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
foreach ($myarray2 as $key => $value) {
echo $key."=>".$value."<br/>";
}
?>
结果
home=>jiangxi
5=>hunan
6=>guangdong
注意第三个元素下标为6,因为定义时第二个元素下标直接指定为5,
24.多维度数组声明及其遍历
实际为一维度数组
见本篇笔记之前的内容
25.联合使用list(),each(),while循环遍历数组
each函数(已过时,不推荐)
each函数遍历第一个元素后会将指针后移一位,直到移到最后一位,下标越界后会返回false
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
$key=each($myarray2);//执行each后,指针后移一位
print_r($key);
echo "<br/>****<br/>";
$key=each($myarray2);
print_r($key);
echo "<br/>****<br/>";
$key=each($myarray2);
print_r($key);
echo "<br/>****<br/>";
$key=each($myarray2);
var_dump($key);
?>
结果:
Array ( [1] => hunan [value] => hunan [0] => 5 [key] => 5 )
Array ( [1] => guangdong [value] => guangdong [0] => 6 [key] => 6 )
bool(false)
26.使用数组的内部指针控制函数遍历数组
通过移动或改变指针的位置,可以访问数组中的任意元素。通过以下几个内建函数可以利用
current():取得目前指针位置的内容资料
key():读取目前指针所指向资料的索引值
next():将数组中的内容指针移动到下一单元
prev():将数组的内部指针到会一位
end():将数组的内部指针指向最后一个元素
reset():将目前指针无条件移到第一个索引位置
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
echo "第一个元素:".key($myarray2)."=>".current($myarray2)."<br/>";
next($myarray2);
next($myarray2);
echo "第三个元素:".key($myarray2)."=>".current($myarray2)."<br/>";
prev($myarray2);
echo "第二个元素:".key($myarray2)."=>".current($myarray2)."<br/>";
reset($myarray2);
echo "第一个元素:".key($myarray2)."=>".current($myarray2)."<br/>";
?>
结果是:
第一个元素:home=>jiangxi
第三个元素:6=>guangdong
第二个元素:5=>hunan
第一个元素:home=>jiangxi
27.预定义数组–全局
无需声明,在全局范围内生效,不用使用glogbal关键字访问
28.预定义数组–服务器变量 $_SERVER,环境变量 $_ENV,URL GET变量 $_GET,HTTP POST变量: $_POST,request变量: $_REQUEST,HTTP文件上传变量: $_FILES,HTTP Cookies: $_COOKIE,Session变量: $_SESSION,Global变量: $GLOBALS,
- 服务器变量 $_SERVER:
是一个包含注入头信息,路径和脚本位置的数组。 - 环境变量 $_ENV
php解析器的变量数组 - URL GET变量 $_GET:
通过get方式提交来的一组变量的键值对数组 - HTTP POST变量: $_POST:
通过post方式提交来的一组变量的键值对数组 - request变量: $_REQUEST
包含 $_GET, $_POST, $_COOKIE中的全部内容 - HTTP文件上传变量: $_FILES
略 - HTTP Cookies: $_COOKIE
cookie变量数组 - Session变量: $_SESSION:
会话信息变量数组 - Global变量: $GLOBALS:
所有已定义的全局变量组成的数组
29.数组的相关处理函数—数组键/值操作函数
- array_values()
传入数组,从新安排数组下标
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
print_r($myarray2);
$myarray=array_values($myarray2);
echo "<br/>**<br/>";
print_r($myarray);
?>
结果:
Array ( [home] => jiangxi [5] => hunan [6] => guangdong )
**
Array ( [0] => jiangxi [1] => hunan [2] => guangdong )
- array_keys()
返回数组键名
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
print_r($myarray2); $myarray=array_keys($myarray2); echo
"<br/>**<br/>"; print_r($myarray); ?>
结果是:
Array ( [home] => jiangxi [5] => hunan [6] => guangdong )
**
Array ( [0] => home [1] => 5 [2] => 6 )
- in_array()
某个值是否在数组中,连个参数,第一个参数是值,第二个参数是数组
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
echo in_array("hunan", $myarray2)."<br/>";
?>
结果:
1
- array_flip()
反转数组键和值
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
print_r($myarray2);
$myarray=array_flip($myarray2);
echo "<br/>**<br/>";
print_r($myarray);
?>
结果:
Array ( [home] => jiangxi [5] => hunan [6] => guangdong )
**
Array ( [jiangxi] => home [hunan] => 5 [guangdong] => 6 )
- array_reverse()
反转数组顺序
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong");
print_r($myarray2);
$myarray=array_reverse($myarray2);
echo "<br/>**<br/>";
print_r($myarray);
?>
结果
Array ( [home] => jiangxi [5] => hunan [6] => guangdong )
**
Array ( [0] => guangdong [1] => hunan [home] => jiangxi )
30.统计数组元素的个数和唯一性
- count()
略 - array_count_values()
统计各个值出现的次数
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong","hunan");
print_r($myarray2);
$myarray=array_count_values($myarray2);
echo "<br/>**<br/>";
print_r($myarray);
?>
结果:
Array ( [home] => jiangxi [5] => hunan [6] => guangdong [7] => hunan )
**
Array ( [jiangxi] => 1 [hunan] => 2 [guangdong] => 1 )
ps,这里湖南出现了两次
- array_unique()
删除数组重复值,返回没有重复值得新数组
<?php
$myarray2=array("home"=>"jiangxi",5=>"hunan","guangdong","hunan");
print_r($myarray2);
$myarray=array_unique($myarray2);
echo "<br/>**<br/>";
print_r($myarray);
?>
结果:
Array ( [home] => jiangxi [5] => hunan [6] => guangdong [7] => hunan )
**
Array ( [home] => jiangxi [5] => hunan [6] => guangdong )
31.使用回调函数处理数组的函数
- array_filter()
- array_work()
- array_map()
太繁杂,略了,感觉用处不大
32.数组的排序函数
常见排序函数
33.数组的排序函数—简单的数组排序函数
- sort(),rsort()
两个参数,后一个可选,是排序规则
SORT_REGULAR:默认
SORT_NUMERIC:数字
SORT_STRING:字符串
SORT_LOCALE_STRING:根据当前的locale设置来吧元素当作字符串比较
rsort()是从大大小是sort()的反序
34.数组的排序函数—根据键名对数组排序ksort(),krsort()
35.数组的排序函数—根据键值对数组排序asort(),arsort()
<?php
$myarray2=array(1=>300,500,600,800);
print_r($myarray2);
arsort($myarray2);
echo "<br/>**<br/>";
print_r($myarray2);
?>
结果:
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 )
**
Array ( [4] => 800 [3] => 600 [2] => 500 [1] => 300 )
36.数组的排序函数—根据自然排序法对数组排序natsort(),natcasesort()
所谓自然排序是1-9,a-z,短者优先
37.数组的排序函数—根据用户自定的规则对数组排序usrot(),uasort(),uksort()
两个参数,第一个是排序数组,第二个是自定义的排序函数名字符串(类似使用回调函数)
其他略
38.数组的排序函数—多维数组排序array_multisort()
两个参数,第一个是参数是参与排序的主要数组(首选数组),第二个参数,按照下一个输入数组中相应值得大小来排序。
39.拆分、合并、分解和接合数组
- array_slice()
从一段数组中去一段(连续的子集),第一个参数是被拆分数组,第二个参数是起始位置,第三个参数是返回数组长度,第四个参数是个布尔值,是否返回键名
<?php
$myarray2=array(1=>300,500,600,800,500);
print_r($myarray2);
$myarray=array_slice($myarray2, 2,3);
echo "<br/>**<br/>";
print_r($myarray);
?>
结果:
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
**
Array ( [0] => 600 [1] => 800 [2] => 500 )
- array_splice()
删除一段元素(连续的子集),参数同上,但第四个参数表示之前删除的元素用第四个元素替代
<?php
$myarray2=array(1=>300,500,600,800,500);
print_r($myarray2);
array_splice($myarray2,2,3,"hi");
echo "<br/>**<br/>";
print_r($myarray2);
?>
结果:
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
**
Array ( [0] => 300 [1] => 500 [2] => hi )
- array_combine()
合并两个数组来创建一个新数组,其中一个数组是键名
$myarray1=array(1,2,3,4,5);
print_r($myarray1);
echo "<br/>**<br/>";
$myarray2=array(1=>300,500,600,800,500);
print_r($myarray2);
$myarray3=array_combine($myarray1,$myarray2);
echo "<br/>**<br/>";
print_r($myarray3);
?>
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
**
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
**
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
- array_merge()
数组融合,多个数组融合为一个数组
<?php
$myarray1=array(2=>500,400,900,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
$myarray2=array(1=>300,500,600,800,500);
print_r($myarray2);
$myarray3=array_merge($myarray1,$myarray2);
echo "<br/>**<br/>";
print_r($myarray3);
?>
结果:
Array ( [2] => 500 [3] => 400 [4] => 900 [5] => 600 [6] => 700 )
**
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
**
Array ( [0] => 500 [1] => 400 [2] => 900 [3] => 600 [4] => 700 [5] => 300 [6] => 500 [7] => 600 [8] => 800 [9] => 500 )
- array_interset()
两个数组的交集
<?php
$myarray1=array(2=>500,400,300,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
$myarray2=array(1=>300,500,600,800,500);
print_r($myarray2);
$myarray3=array_intersect($myarray1,$myarray2);
echo "<br/>**<br/>";
print_r($myarray3);
?>
结果:
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 )
**
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
**
Array ( [2] => 500 [4] => 300 [5] => 600 )
- array_diff()
返回两个数组的差集
<?php
$myarray1=array(2=>500,400,300,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
$myarray2=array(1=>300,500,600,800,500);
print_r($myarray2);
$myarray3=array_diff($myarray1,$myarray2);
echo "<br/>**<br/>";
print_r($myarray3);
?>
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 )
**
Array ( [1] => 300 [2] => 500 [3] => 600 [4] => 800 [5] => 500 )
**
Array ( [3] => 400 [6] => 700 )
40.数组与数据结构–使用数组实现堆栈 push()
进栈:array_push():向数组压入新的元素
出栈:array_pop():向数组中删除最后一个元素
<?php
$myarray1=array(2=>500,400,300,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
echo array_push($myarray1,8888,6666);
echo "<br/>**<br/>";//输出长度为7
print_r($myarray1);
echo "<br/>**<br/>";
echo array_pop($myarray1);
print_r($myarray1);
?>
结果:
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 )
**
7
**
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 [7] => 8888 [8] => 6666 )
**
6666Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 [7] => 8888 )
41.数组与数据结构–使用数组实现队列 array_shift()
先进后出栈,array_shift()只有一个参数,即用来实现队列的数组。本函数功能是将第一个元素移除,数组长度减一,后面的元素向前移动一位。
<?php
$myarray1=array(2=>500,400,300,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
array_shift($myarray1);
print_r($myarray1);
?>
结果:
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 )
**
Array ( [0] => 400 [1] => 300 [2] => 600 [3] => 700 )
42.其他有用的数组处理函数–array_rand()
array_rand()接收一个数组作为输入数组,从数组中随机选出一个或多个元素。第一个参数是数组,,第二个参数可选,指明想取多少个元素。返回随机数组元素的键名
<?php
$myarray1=array(2=>500,400,300,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
$myarray2=array_rand($myarray1,3);
print_r($myarray2);
echo "<br/>**<br/>";
print_r($myarray1[$myarray2[0]]);
echo "<br/>**<br/>";
print_r($myarray1[$myarray2[1]]);
echo "<br/>**<br/>";
print_r($myarray1[$myarray2[2]]);
?>
结果:
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 )
**
Array ( [0] => 3 [1] => 4 [2] => 6 )
**
400
**
300
**
700
43.其他有用的数组处理函数–shuffle()
shuffle()将数组打乱顺序,随机化乱序
<?php
$myarray1=array(2=>500,400,300,600,700);
print_r($myarray1);
echo "<br/>**<br/>";
shuffle($myarray1);
print_r($myarray1);
?>
结果:
Array ( [2] => 500 [3] => 400 [4] => 300 [5] => 600 [6] => 700 )
**
Array ( [0] => 400 [1] => 300 [2] => 600 [3] => 700 [4] => 500 )
44.其他有用的数组处理函数–sum()
sum()求和
45.其他有用的数组处理函数–range()
创建一个等步长的数组,第一个参数为数组元素最小是,第二个参数为数组元素最大值,第三个参数为可选的步长。默认为1,
<?php
$myarray1=range(3,32,5);
print_r($myarray1);
?>
结果:
Array ( [0] => 3 [1] => 8 [2] => 13 [3] => 18 [4] => 23 [5] => 28 )
45.数组运算符
46.数组下标的注意事项
数组下标只能是整数或字符串