一,数组的概述
概念: 是一个能在单个变量中存储多个数据值的特殊变量
声明空数组的方式
<?php
$arr = array(); // 声明一个空数组
$arr = []; // 声明一个空数组
?>
二,数组的分类
索引数组: 下标是整数
$arr = [];
$arr[0] = '张三';
$arr[1] = '男';
$arr[2] = 18;
关联数组: 下标是字符串
$brr = [];
$brr['name'] = '李四';
$brr['sex'] = '女';
$brr['age'] = 20;
// 打印查看整个数组元素
// echo $arr; 报错,显示一个'Array' 数组不能被直接echo输出
var_dump($arr); // 正确方式
print_r($brr); // 正确方式
三,索引数组--元素的基本操作
<?php
$arr = [];
// 添加值
$arr[] = 3;
$arr[5] = 10;
$arr[30] = 20;
$arr[] = 30;
// 删除值
unset($arr[5]);
$arr[2] = null; // 删除一个值
$arr = null; // 删除整个数组
// 修改值
$arr[30] = 100;
// 获取值
echo $arr[0]; // 输出 张三
注意: 当 [ ] 为空时, 会被理解为 索引下标最大值+1
?>
四,关联数组--元素的基本操作
<?php
$brr = [ ];
// 添加值
$brr['height'] = '180cm';
//使用变量代表下标
$hometown= 'hometown';
$brr[$hometown] = '新疆-克拉玛依区';
// 删除值
unset($brr['sex']);
$brr['sex'] = null; // 删除一个值
$brr = null; // 删除整个数组
// 修改值
$brr['age'] = 20;
// 获取值
echo $brr['name']; // 输出 张三
// 注意:
unset( $brr ); // 销毁整个数组
echo $brr[ name ]; // 报错, 常量未定义, 然后把 name 理解为字符串, 输出张三
?>
五,索引和关联混合数组
<?php
$crr = [];
$crr[] = 18; // 索引下标 是 0
$crr['name'] = 'a';
$crr['sex'] = 'b';
$crr[] = 30; // 索引下标 是 1
?>
六,声明数组的方式
<?php
$arr = array( 'name'=>'张三', 'sex'=>'男', 'age'=>18 );
$brr = array( '李四', '女', 20 ); // 下标为 0 1 2
$crr = array( 'name'=>'王五', '男', 21); // 下标为 name 0 1
?>
<?php
$arr = [ 'name'=>'张三', 'sex'=>'男', 'age'=>18 ];
$brr = [ '李四', '女', 20 ]; // 下标为 0 1 2
$crr = [ 'name'=>'王五', '男', 21 ]; // 下标为 name 0 1
?>
七,数组遍历
遍历, 是指对数组中每一个元素,挨个去处理.
foreach
<?php
$arr = ['a', 'b', 'c', 'd'];
foreach( $arr as $k => $v ){
}
foreach( $arr as $k => $v ):
endforeach;
/*
$arr 是要遍历的数组
把数组中每一个元素拿出来
下标(键) 赋值给$k
元素(值) 赋值给$v
*/
?>
for
<?php
$arr = ['a', 'b', 'c', 'd'];
$n = count( $arr );
for($i = 0; $i < $n; $i++){
echo $arr[ $i ];
}
/*
数组的下标, 必须是连续的索引数组
*/
?>
八,多维数组
<?php
$arr = array(
array(10,20,30),
array(1,2,3),
array('apple','orange')
);
$arr = [
['hello',30,'world'],
[20,'hello'],
['apple','pear','orange']
];
?>
<?php
$brr = array(
array('name' => '王多朵','age'=>25,'sex'=>'男','classid'=>'必火网络学院'),
array('name' => '吴子墨','age'=>21,'sex'=>'男','classid'=>'必火网络学院'),
array('name' => '钱太多','age'=>22,'sex'=>'女','classid'=>'必火网络学院')
);
$brr = [
['name' => '王多朵','age'=>25,'sex'=>'男','classid'=>'必火网络学院'],
['name' => '吴子墨','age'=>21,'sex'=>'男','classid'=>'必火网络学院'],
['name' => '钱太多','age'=>22,'sex'=>'女','classid'=>'必火网络学院']
];
//数组中的元素也可以使用变量
$a = ['a', 'b', 'c'];
$b = ['d', 'e', 'f'];
$c = ['g', 'h', 'i'];
$crr = [ $a, $b, $c ];
?>
九,超全局数组
超全局, 是指 超越页面, 可以在两个文件之间传递的变量.
$_GET URL地址 表单, 超连接
$_POST 表单
$_REQUEST 包含 $_GET 和 $__POST
$_COOKIE
$_SESSION
$_FILES
$_SERVER
<?php
$_SERVER['SERVER_NAME'] // 主机名
$_SERVER['SERVER_ADDR'] // 本服务器IP地址
$_SERVER['REMOTE_ADDR'] // 浏览当前脚本的用户IP地址
$_SERVER['HTTP_USER_AGENT'] // 用户浏览器
$_SERVER['DOCUMENT_ROOT'] // 根目录的路径
$_SERVER['REQUEST_URI'] // 用来指定要访问的页面
$_SERVER['PHP_SELF'] // 文件自己
?>
十,数组函数
range( ) 根据范围创建数组,包含指定的元素
is_array( ) 判断变量是否为一个数组
count( ) 返回数组中元素个数
array_values( ) 返回数组中所有的值
array_keys( ) 返回数组中所有的键名
in_array( ) 检查数组中是否存在某个值
array_pad( ) 用值将数组填补到指定长度
array_merge( ) 合并一个或多个数组
array_reverse( ) 返回一个单元顺序相反的数组
array_unique( ) 移除数组中重复的值
array_push( ) 将一个或多个单元压入数组的末尾(入栈)
array_pop( ) 将数组最后一个单元弹出(出栈)
array_unshift( ) 在数组开头插入一个或多个单元
array_shift( ) 将数组开头的单元移出数组
array_map( ) 为数组的每个元素应用回调函数
array_filter( ) 使用回调函数过滤数组的元素
usort( ) 使用用户自定义的比较函数对数组中的值进行排序
json_encode( ) 对变量进行 JSON 编码
json_decode( ) 对 JSON 格式的字符串进行解码
explode( 分割符, 字符串 ) 把一个字符串, 按某些字符拆分, 返回一个数组
implode( 连接符, 数组 ) 把数组中每个元素, 用连接符拼接成一个字符串
|