PHP学习笔记(观隅反三)

简介: PHP学习笔记(观隅反三)

前言


不知不觉距离上篇PHP的文章 PHP学习笔记(才贯二酉)已经过去好多天了,今天看到推送——1024程序员节,莫名还有些小激动(os:自知自己的一些雕虫小技肯定和程序员这个技术深似海的称号扯不上什么关系,但是奈何人菜瘾大,还是忍不住在各位 “关公” 面前浅耍一下小刀,如有不足,感谢指正呀!)


也希望通过学习笔记巩固自己所学知识,学会举一反三,从一件事情类推而知道其他许多事情。


b9feb24e4b1c410ab06ace1b60189bab.png


数组(一)


为什么要创建数组这里就不赘述了,在 PHP 中,有三种类型的数组:

数值数组 - 带有数字 ID 键的数组

关联数组 - 带有指定的键的数组,每个键关联一个值

多维数组 - 包含一个或多个数组的数组


创建数组


在 PHP 中,定义数组的方式有:


利用array[ ]函数来定义,这也是PHP中最常用定义数组的方法:

$arr1=array("hello","world",1);
var_dump($arr1);
echo "<br>";
//输出  array(3) { [0]=> string(5) "hello" [1]=> string(5) "world" [2]=> int(1) }


利用中括号来定义数组:


$arr2=["hello","world",1];
var_dump($arr2);
echo "<br>"
//输出 array(3) { [0]=> string(5) "hello" [1]=> string(5) "world" [2]=> int(1) }


通过键值对来定义隐形数组:


$array[]='orange';
$array[2]='apple';
$array[]='banana';
$array['watermelon']='watermelon';
var_dump($array);


隐形数组的输出:

9905cac0912b46e1bd9869ead72dd6d4.png

由此可以简单总结一下PHP中数组的特点:


数组的下标可以是整数下标(数组元素均为整数下标:索引数组);也可以是字符串类型的下标(数组元素均为字符串:关联数组);也可以是不同类型下标混合使用(混合数组);

数组元素的顺序和元素放入的顺序有关,和下标无关;

整数下标具有自增长性,如果手动添加一个较大的整数下标,后面的下标会根据最大的元素下标开始自增;

特殊值的下标可以自动转换:true,false等

5.数组元素没有类型限制,也没有长度限制,不需要提前指定数组长度,比较灵活,同时效率也不会那么高;存储的位置是在堆区,为数组分配一块连续的内存。


PHP中根据索引的分类分为:索引数组、关联数组


索引数组和关联数组的差别就在键名上,索引数组的键名是数字;关联数组的键名由字符串或字符串、数字混合的形式组成;如果一个数组中有一个键名不是数字,那么这个数组就是关联数组。


索引数组


//索引数组1 下标是可以不连续的,不给加下标默认下标是0
 $arr3=array(
    '2'=>"张三",
    '3'=>"张四",
    '4'=>"张五",
    '5'=>"张六",
  );
 print_r($arr3);
 var_dump($arr3);
 echo $arr3[3];
 //Array ( [2] => 张三 [3] => 张四 [4] => 张五 [5] => 张六 )
//array(4) { [2]=> string(6) "张三" [3]=> string(6) "张四" [4]=> string(6) "张五" [5]=> string(6) "张六" }
//张四
//索引数组2
$arr4 = array('张三','张四','张五','张六');
 print_r($arr4);
 echo "<br>";
 echo '数组 $arr4 中的,键名为3的键值为:'.$arr4[3];
 //Array ( [0] => 张三 [1] => 张四 [2] => 张五 [3] => 张六 )
//数组 $arr4 中的,键名为3的键值为:张六
//索引数组3
 $arr5[0]='张三';
 $arr5[1]='张四';
 $arr5[2]='张五';
 $arr5[3]='张六';
 var_dump($arr5);
 //array(4) { [0]=> string(6) "张三" [1]=> string(6) "张四" [2]=> string(6) "张五" [3]=> string(6) "张六" }


关联数组


//关联数组的下标(键名)由数值和字符串混合的形式组成,如果一个数组中有一个键名不是数字,那么这个数组就是关联数组。
  $arr6 = array(
    'Apple' => '苹果',
    'Banana' => '香蕉',
    'Orange' => '橘子',
    'Plum' => '李子',
    'Strawberry' => '草莓'
    );
print_r($arr6);
//Array ( [Apple] => 苹果 [Banana] => 香蕉 [Orange] => 橘子 [Plum] => 李子 [Strawberry] => 草莓 )


多维数组


b4141735f15b407db2b34aa23a2b1d03.png


我们以二维数组为例,它的语法有:


1、直接赋值法,语法 $array[一维下标][二维下标]="值";

2、使用array()函数,语法array(array(key=>value...),array(key=>value...)....);

比如


//直接赋值法:
$stu[0]['姓名'] = '张三';
$stu[0]['年龄'] = '25';
$stu[0]['性别'] = '男';
$stu[1]['姓名'] = '李四';
$stu[1]['年龄'] = '21';
$stu[1]['性别'] = '男';
$stu[2]['姓名'] = '娜娜';
$stu[2]['年龄'] = '22';
$stu[2]['性别'] = '女';
var_dump($stu);
//array(3) { [0]=> array(3) { ["姓名"]=> string(6) "张三" ["年龄"]=> string(2) "25" ["性别"]=> string(3) "男" } [1]=> array(3) { ["姓名"]=> string(6) "李四" ["年龄"]=> string(2) "21" ["性别"]=> string(3) "男" } [2]=> array(3) { ["姓名"]=> string(6) "娜娜" ["年龄"]=> string(2) "22" ["性别"]=> string(3) "女" } }
//使用array()函数
$stu1=array(
    array('张三','25','男'),
    array('李四','21','男'),
    array('娜娜','22','女'),
);
var_dump($stu1);
//array(3) { [0]=> array(3) { [0]=> string(6) "张三" [1]=> string(2) "25" [2]=> string(3) "男" } [1]=> array(3) { [0]=> string(6) "李四" [1]=> string(2) "21" [2]=> string(3) "男" } [2]=> array(3) { [0]=> string(6) "娜娜" [1]=> string(2) "22" [2]=> string(3) "女" } }
$stu2=array(
    array('name'=>'lili','sex'=>'famale','age'=>12),
    array('name'=>'tom','sex'=>'male','age'=>15),
    array('name'=>'join','sex'=>'famale','age'=>10)
);
echo ($stu2[0]['name']);//输出指定数组元素 lili
echo "<br>";


数组的遍历


PHP中遍历数组有三种常用的方法:


1、使用for语句循环遍历数组;


2、使用foreach语句遍历数组;


3、联合使用list()、each()和while循环遍历数组(感觉挺有意思的,试一下)


这三种方法中效率最高的是使用foreach语句遍历数组,在这里着重介绍一下foreach语句:


//for语句
$arr9 = array('tom','lili','join');
$num = count($arr9);//count用来获取数组的长度
for($i=0;$i<$num;++$i){
echo $arr9[$i].'<br />';
}
//foreach语句
//每次循环中,当前元素的值被赋给变量$value,并且把数组内部的指针向后移动一步。所以下一次循环中会得到数组的下一个元素,直到数组的结尾才停止循环,结束数组的遍历。
foreach($arr9 as $value){
    echo $value."<br>";
}
//tom
//lili
//join
foreach($arr9 as $key=> $value){
    echo $key.$value."<br>";
}
//打印出键名(下标)
//0tom
//1lili
//2join
//联合使用list()、each()和while循环遍历数组
$arr = array('Chinese'=>'沃和莱特','english'=>'varlet');
while(list($key,$value) = each($arr)){
echo $key.'=>'.$value.'<br />';
}
//Chinese=>沃和莱特
//english=>varlet

foreach语句遍历二维数组:


// 二维数组的遍历
$employee=array(
    "人事部"=>array('a','b','c'),
    "研发部"=>array('d','e','f'),
);
//打印出人事部有abc,研发部有def;
foreach($employee as $key=>$value){
    echo $key.":";
foreach($value as $keyin=>$valuein){
    echo $valuein." ";
}
echo "<br>";
}
//人事部:a b c
//研发部:d e f


// 把一个数组遍历成一个表格
$people=array(
    array('name'=>'张三','sex'=>'male','age'=>25,'ad'=>"济南"),
    array('name'=>'李四','sex'=>'famale','age'=>27,'ad'=>"上海"),
    array('name'=>'王五','sex'=>'male','age'=>21,'ad'=>"青岛")
);
echo "<table border='1'>";
echo "<tr><th>id</th><th>name</th><th>sex</th><th>age</th><th>ad</th></tr>";
foreach($people as $key=>$value){
    echo "<tr>";
    echo "<td>$key</td>";
foreach($value as $keyin=>$valuein){
    echo "<td>$valuein</td>";
}
    echo "</tr>";
}
echo "</table>";
echo "<br>";

bf326d74d3dd4c91ba4c6a0e3ec34cac.png


简单总结一下foreach遍历的本质就是数组的内部有一颗指针,默认指向数组元素的第一个元素,foreach利用指针获取数组,同时移动指针;并且foreach会重置指针,让指针指向第一个元素;


数组函数


//返回数组元素的位置
$str2=["张三",23,"jinan"];
$res=array_search("张三",$str2);
echo $res;
// 0
// 删除数组最后一个元素
$str2=["张三",23,"jinan"];
$res1=array_pop($str2);
echo $res1;
// jinan
// 默认向数组尾部增加一个元素
$str2=["张三",23,"jinan"];
$res2=array_push($str2,"qingdao");
print_r($str2);
// Array ( [0] => 张三 [1] => 23 [2] => jinan [3] => qingdao )
//数组去重
$arr3=["join","jim","tom","tom"];
$res4=array_unique($arr3);
var_dump($res4);
// array(3) { [0]=> string(4) "join" [1]=> string(3) "jim" [2]=> string(3) "tom" }
// 数组排序 升序
$arr4=["mudan","meigui","huaihua"];
sort($arr4);
print_r($arr4);
// Array ( [0] => huaihua [1] => meigui [2] => mudan )
$arr5=[12,13,32,45,0];
sort($arr5);
print_r($arr5);
// Array ( [0] => 0 [1] => 12 [2] => 13 [3] => 32 [4] => 45 )
// 降序排序
$arr4=["mudan","meigui","huaihua"];
rsort($arr4);
print_r($arr4);
// Array ( [0] => mudan [1] => meigui [2] => huaihua )
$arr5=[12,13,32,45,0];
rsort($arr5);
print_r($arr5);
// Array ( [0] => 45 [1] => 32 [2] => 13 [3] => 12 [4] => 0 )
// 根据数组的值升序排序
$age=array(
    "granderfather"=>110,
    "grandermonther"=>100,
    "father"=>42,
    "mother"=>40,
    "brother"=>10,
    "me"=>19,
);
asort($age);
print_r($age);
// Array ( [brother] => 10 [me] => 19 [mother] => 40 [father] => 42 [grandermonther] => 100 [granderfather] => 110 )
// 根据键值进行升序排序
$age1=array(
    "ben"=>11,
    "lili"=>12,
    "tom"=>13
);
ksort($age1);
print_r($age1);
// Array ( [ben] => 11 [lili] => 12 [tom] => 13 )
// 根据键值进行降序排序
$age1=array(
    "ben"=>11,
    "lili"=>12,
    "tom"=>13
);
krsort($age1);
print_r($age1);
// Array ( [tom] => 13 [lili] => 12 [ben] => 11 )
// 打乱数组
$age=array(
    "granderfather"=>110,
    "grandermonther"=>100,
    "father"=>42,
    "mother"=>40,
    "brother"=>10,
    "me"=>19,
);
shuffle($age);
print_r($age);
// Array ( [0] => 100 [1] => 42 [2] => 19 [3] => 40 [4] => 10 [5] => 110 )
// 删除数组
$arr5=[12,13,32,45,0];
unset($arr5[0]);
print_r($arr5);
// Array ( [1] => 32 [2] => 13 [3] => 12 [4] => 0 )
// 返回所有元素并将其放在一个新的数组中
$age1=array(
    "ben"=>11,
    "lili"=>12,
    "tom"=>13
);
$res9=array_values($age1);
print_r($res9);
// Array ( [0] => 11 [1] => 12 [2] => 13 )
// 返回一个包含从 "0" 到 "50" 之间并以 10 递增的元素的数组:
$number = range(0,50,10);
print_r ($number);
// Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 )
// 返回指定范围的索引
$num=[12,13,32,45,0,7,8,10];
$Nu=array_slice($num,1,3);//从第一个元素到第三个元素
print_r($Nu);
// Array ( [0] => 13 [1] => 32 [2] => 45 )


总结


以上就是这篇文章对php数组的介绍啦,后续还会持续更新~可爱的程序员大佬们1024快乐,你是电脑的灵魂,你是网络的主人,你是程序的化身,你是创意的天使,你是互联网的传说,期待创造与前进,加油!

7429b9ed9db946a6a73e3e222165864f.png


相关文章
|
3月前
|
存储 Java 数据库连接
php学习笔记-代码基本语法-day01
本文是关于PHP编程语言的基础语法学习笔记,内容包括PHP的介绍、注释风格、数据类型、命名规范、常量和变量的使用,以及变量和常量相关的常用函数。文中详细解释了PHP的基本语法元素和一些易混淆的概念,如传值赋值与传址赋值、可变变量,以及如何检查变量是否已定义或为空。
php学习笔记-代码基本语法-day01
|
3月前
|
JavaScript 前端开发 安全
php学习笔记-普通表单参数提交获取及页面的重定向和一个登录小demo-day05
本文介绍了PHP中普通表单参数的提交获取、页面重定向的方法,并通过一个登录示例演示了表单参数的封装和页面跳转处理。
|
3月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
3月前
|
存储 API PHP
php学习笔记-php数组的创建和使用,数组常用函数-day03
关于PHP数组的创建、使用以及常用函数的详细学习笔记。
php学习笔记-php数组的创建和使用,数组常用函数-day03
|
3月前
|
JavaScript Java PHP
php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
本文是第二天的PHP学习笔记,涵盖了PHP中运算符的使用、类型转换方式,以及打印输出语句的特点,展示了其相较于其他编程语言的一些特殊之处。
php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02
|
3月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
3月前
|
前端开发 PHP
php学习笔记-php文件表单上传-day06
本文介绍了PHP文件上传处理流程、预定义变量`$_FILES`的使用、文件上传状态代码以及文件上传实现函数。同时,通过一个文件上传的小例子,演示了文件上传表单的创建、文件上传表单处理的PHP页面编写以及运行测试输出。
php学习笔记-php文件表单上传-day06
|
3月前
|
JavaScript 程序员 PHP
php学习笔记-php自定义函数-day05
本文介绍了PHP自定义函数的创建、调用、参数赋值以及作用域和生命周期,还探讨了`global`和`static`关键字的使用,以及`return`、`exit`和`die`的不同用法。
|
3月前
|
XML SQL PHP
php学习笔记-php字符串及字符串常用函数总结-day04
本文总结了PHP中字符串的三种定义方式和常用字符串处理函数,包括字符串的修剪、转换、长度计算、子串操作、比较、连接、分割及替换等操作。
|
安全 关系型数据库 MySQL
某教程学习笔记(一):17、php漏洞
某教程学习笔记(一):17、php漏洞
100 0
某教程学习笔记(一):17、php漏洞