数组
直接赋值声明
索引数组:下标为数字
1 | $arr1[0] = 1; |
关联数组:下标为字符串
1 | $arr2['one'] = 1; |
[]
和{}
可以访问下标,建议使用[]
,因为 echo “$arr1{0}2222”; 报错
1 | echo $arr1[0]; |
下标是字符串,数字字符串转化为整数
1 | $arr1['2'] = 'a'; |
例外,’08’不会转化成8,而是’08’,被当作八进制
1 | $arr1['01'] = '01'; |
下标是浮点数,小数部分会被舍弃
1 | $arr1[1.8] = 1.8; |
下标是布尔值,true转化为1,false转化为0
1 | $arr1[true] = 'true'; |
下标是null,转化为空字符串’’
1 | $arr1[null] = 'null'; |
数组和对象做下标会有警告
1 | $index = array(); |
默认从零开始,当前数组索引出现过的最大值加1
1 | $arr1[8] = 8; |
关联数组不会影响索引下标的排列规则
1 | $arr1['one'] = 'one'; |
使用array
声明数组,默认是索引的下标,从0开始
1 | $arr = array('a', 'b', 'c'); |
可以使用=>
符号指定下标
1 | $arr = array('aaa', 'two'=>'bbb', 'ccc'); |
php5.4+,可以使用
1 | $arr = ['aaa', 'two'=>'bbb', 'ccc']; |
unset
删除数组中一个元素,array_values
重新索引
1 | $arr = ['a', 'b', 'c']; |
list()
遍历,左边是list
函数,等号右边只能是一个数组,只能是索引数组(下标是连续的),list()
中的参数和数组总一一对应
1 | $str = 'zs_ls_ww'; |
each()
遍历,each()
只处理当前元素,指针指向当前元素,下一次调用,指针指向下一个元素,最后一个元素再调用返回false
1 | $arr = ['zs', 'ls', 'ww']; |
结合list()
和each()
遍历
1 | $arr = ['zs', 'ls', 'ww']; |
数组地址访问方法 prev()
next()
reset()
end()
key()
current()
1 | $arr = ['one'=>'1', 'two'=>'2', 'three'=>'3']; |
超全局数组(变量),在php中,已经声明完的变量,你可以直接就去使用,变量名字已经规定好了,$_SERVER $_ENV
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$GLOBALS
1 | foreach ($_SERVER as $key => $value) { |
数组相关的函数
1 | $lamp = array('os'=>'Linux', 'webserver'=>'Apache', 'db'=>'Mysql', 'language'=>'PHP', 'num'=>10); |
统计数组元素个数和唯一性
1 | $lamp = ['os'=>'Linux', 'Linux', 'webserver'=>'Apache']; |
使用回调函数处理数组的函数
array_filter($input, fn)
过滤数组,不传回调函数,返回值为真的元素
1 | $arr = [1, 2, 3, null, -1, 'a', false, true]; |
unset()
删除数组本身的元素
1 | unset($arr[1]); |
array_walk($arr, $fn, $userdata)
对数组的每个成员应用用户函数
1 | $arr = [1, 2, 3, null, -1, 'a', false, true]; |
array_map($fn, $arr1, $arr2,...)
作用于数组的每个元素上
1 | $arr1 = [1, 2, 4]; |
当第一参数回调函数为空,返回结果是数组对应各项合并
1 | $arr3 = [false, true]; |
冒泡排序1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function bubbleSort($arr) {
$len = count($arr);
for ($i = 0; $i < $len; $i++) {
for ($j = 0; $j < $len - 1 - $i; $j++) {
if($arr[$j] > $arr[$j + 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j + 1];
$arr[$j + 1] = $tmp;
}
}
}
return $arr;
}
$arr = [0, 12, 2, 3, 14, 5, 6, 7, 8, 9];
print_r(bubbleSort($arr));
数组拆分、合并、分解
array_slice($arr, $offset, $len, true)
从数组中取出一段
1 | $arr = ['a', 'b', 'c', 'd']; |
array_splice(&$input, $offset, $len, $replace)
把数组中的一部分去掉并用其他值取代
1 | $arr = ['a', 'b'=>2, 'c', 'd']; |
array_combine($keys, $values)
创建一个数组,用一个数组的值作为其键名,另一个数组作为其值
1 | $arr1 = ['a', 'b', 'c']; |
+
下标相同的会覆盖,前面的覆盖后面的
1 | $a = ['a', 'two'=>'b', 'c']; |
array_merge($arr1, $arr2, ...)
合并数组,索引数组下标相同不覆盖,关联数组下标相同会覆盖
1 | $m = array_merge($a, $b); |
array_intersect($arr1, $arr2, $arr3...)
计算数组交集
1 | $arr1 = [4, 5, 6, 7, 8]; |
array_diff($arr1, $arr2)
计算数组差集
1 | $arr1 = [4, 5, 6, 7, 8]; |
类
1 | class Person { |
继承
1 | // `private`这是私有的,只能自己用,子类也不能使用 |
魔术方法
1 | // 魔术方法 `__construct()` `__desctruct()` `__set()` `__get()` `__isset()` `__unset()` |
接口
1 | /** |
单例模式
1 | // 单例模式 |
数据库
配置环境变量,可以直接使用mysql
命令:此电脑->属性->高级->环境变量
连接远程数据库 -u
用户名 -p
密码mysql -h localhost -uroot -p
获取user表格所有数据select * from mysql.user
create database [dbname]
添加库
1 | mysql> create database aaa; |
show databases
查看数据库
1 | mysql> show databases; |
use [dbname]
切换到数据库
1 | mysql> use xsphp |
show tables
查看表格
1 | mysql> show tables; |
create table [tablename]
创建一个表格
1 | mysql> create table users(id int not null auto_increment primary key); |
再查看表格列表
1 | mysql> show tables; |
desc [tablename]
查看表格详细信息
1 | mysql> desc users; |
alter table [tablename] add [field] [desc]
新增字段
1 | mysql> alter table users add username char(30) not null default ''; |
show create table [tablename]
查看创建表格语句
1 | mysql> show create table users; |
再增加一个字段
1 | mysql> alter table users add password varchar(40) not null default ''; |
alter table [tablename] drop column [field]
删除字段
1 | mysql> alter table users drop column password; |
alter table [tablename] modify column [filed] [desc]
修改一个字段
1 | mysql> alter table users modify column username char(22); |
insert into [tablename] (key1, key2, ...) values (value1, value2, ...)
添加数据
1 | mysql> insert into users (username, password) values ('admin', 'admin'); |
update [tablename] set [field]=value1, [field]=values2 where [conditions]
修改数据
1 | mysql> update users set username='www', password='123456' where id=3; |
delete from [tablename] where [conditions]
删除数据
1 | mysql> select * from users; |
drop table [tablename]
删除表
drop database [dbname]
删除库
PHP操作数据库
1 | // 连接数据库(返回资源) |
1 | <?php |