PHP 数组
数组的概念
数组:array
,数据的组合,指将一组数据(多个)存储到一个容器中,用变量指向该容器,然后可以通过变量一次性得到该容器中的所有数据。
数组定义语法
array函数定义
$变量 = array(元素 1,元素 2,元素 3);
中括号定义
$变量 = [元素 1,元素 2,元素 3]
隐形定义数组:给变量增添一个中括号
$变量[] = 值;
// 不提供下标,系统默认从 0 开始
$变量[key] = value;
$变量[下标] = 值;
多维数组
示例:二维数组
<?php
$test = array(
array("name" => "Alice","age" => 18),
["name" => "Bob","age" => 19]
);
print_r($test);
?>
可以在二维数组中在嵌套,实现多维数组
<?php
$test = array(
array("name" => "Alice","age" => 18),
[
"info" => array(
"name" => "Junglezt",
"age" => 99
),
"favorite" => array(
"like" => "Web",
"favorite" => "kill"
)
]
);
print_r($test)
?>
异型数组(不规则数组)
数组中的元素不规则,有普通变量也有数组
下标访问
通过下标得到数组中的值
<?php
$test = array(
"name1" => array(
"name" => "Alice",
"age" => 18
),
"name2" => [
"info" => array(
"name" => "Junglezt",
"age" => 99
),
"favorite" => array(
"like" => "Web",
"favorite" => "kill"
)
]
);
print_r($test["name1"]);
echo "<br />";
print_r($test["name1"]["name"]);
echo "<br />";
print_r($test["name2"]);
echo "<br />";
print_r($test["name2"]["info"]);
echo "<br />";
print_r($test["name2"]["favorite"]["like"]);
?>
遍历数组
数组访问通过数组下标访问,有时候数组所有的数据都需要依次使用,需要遍历数组
<?php
foreach($数组变量 as [$下标 =>] $值){
// 通过 $下标 访问元素的下标,通过 $值 访问元素值
}
?>
示例:
<?php
$test = array(1,2,3,4,5,6,7,8,9,10);
// 获取值
foreach($test as $i){
// $i 随意,满足变量名即可
echo $i,"<br />";
}
// 获取值和下标
foreach($test as $a => $b){
echo "下标: ",$a," 值: ",$b,"<br />";
}
?>
注意:在一般数组进行存储时,通常一维数组下标为数字,二维数组下标为字符串(数据库字段名)。所以在进行遍历的时候,通常只需要针对一维数组。然后二位数组通过下标访问。
如下示例:
<?php
$test = array(
0 => array(
"username" => "Jackson",
"password" => "123456"
),
1 => array(
"username" => "Junglezt",
"password" => "test001"
)
);
foreach($test as $key => $value){
// 1、可以继续循环 $value 数组
// 2、可以使用下标访问
echo "用户名: ",$value["username"]," 密码: ",$value["password"],"<br />";
}
?>
for循环遍历数组
for循环需要已知边界条件(起始和结束),而且需要有条件变化的规律
for循环遍历数组必须的条件:
1、获取数组长度,count(得到数组元素的长度)
2、数组下标必须是规律的数字
示例:
<?php
$test = array(
0 => array(
"username" => "zhangsan",
"password" => "123456zs"
),
1 => array(
"username" => "lisi",
"password" => "123456ls"
)
);
// 获取数组中元素的数量
$num = count($test);
for($a = 0;$a < $num;$a++){
echo "用户名: ",$test[$a]["username"]," 密码: ",$test[$a]["password"],"<br />";
}
?>
数组函数
排序函数
数组排序针对的是,对数组的元素进行排序
sort():顺序排序(下标重新排序)
rsort():逆序排序
asort():对数组进行排序(但是下标不会变)
arsort():逆序排序
ksort():对数组按照键名(下标)排序
krsort():逆序排序
shuffle():随机打乱数字元素
指针函数
reset():重置指针,将指针指向首位
end():重置指针,将指针指向最后一个元素
next():指针下移,取得下一个元素的值
prev():指针上移,取得上一个元素的值
current():取得当前指针对应的值
key():获取当前指针对应的下标值
其他函数
array_push():往数组中加入一个元素(后面加入)
array_pop():从数组中取出一个元素(取走)
array_shift():从数组中取出一个元素(前面取出)
array_unshift():从数组中加入一个元素(前面加入)
array_reverse():将数组元素反过来
常用函数
in_array():判断一个元素在数组中是否存在
count():统计数组中元素的数量
array_keys():获取数组的所有下标
array_values():获取数组的所有值(元素)