数组是什么?
数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,array() 函数用于创建数组:
array();
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
定义和用法
count() 函数返回数组中元素的数目。
语法
count(array,mode);
参数 描述
array 必需。规定要计数的数组。
mode 可选。规定函数的模式。可能的值:
0 - 默认。不计算多维数组中的所有元素。
1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。
数组元素的遍历
1.for循环遍历
2.foreach遍历
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
数组函数:利用系统提供的内置函数来处理数组。
1.定义和用法
count() 函数返回数组中元素的数目。
语法
count(array,mode);
参数 描述
array 必需。规定要计数的数组。
mode 可选。规定函数的模式。可能的值:
0 - 默认。不计算多维数组中的所有元素。
1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。
2.is_array(array)
功能:判断参数是否是数组
参数:被判断的数据
返回值:如果参数是数组,返回true,如果参数不是数组,返回false
3.定义和用法
in_array() 函数搜索数组中是否存在指定的值。
语法
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
参数 描述
needle 必需。规定要在数组搜索的值。
haystack 必需。规定要搜索的数组。
strict 可选。如果该参数设置为 TRUE,则 in_array() 函数检查搜索的数据与数组的值的类型是否相同。
4.语法
array_key_exists(key,array)
功能: 检查某个数组中是否存在指定的数组元素标示符。
参数 描述
key 必需。规定键名。
array 必需。规定数组。
5.array_values(array)
功能:将参数数组的数组元素值取出,重新索引,组成一个新的索引数组(抛弃数组元素标示符)。
参数:
Array 操作的数组
返回值:操作正确,返回新的索引数组,操作错误,返回false。
注意:
1、对一维关联数组进行操作,丢掉键名只将数组元素值重新索引
2、对多维数组操作,把子数组当作一个数组元素值来看待
6.extract(array)
功能:将关联数组的数组元素映射到一张变量表中,关联数组的键名作为变量名,数组元素值作为变量值
参数:array 必需 需要处理的关联数组
返回值:成功的将数组元素转化成变量的个数.
注意:
关联数组中,数组元素标示符为数字的数组元素无法转化.
7.List(变量表):
格式:
List($a,$b,$c,$d) = array(“a”,”b”,”c”,”d”);
作用:
将索引数组的数组元素值按顺序依次赋值给list语句的变量表中
注意:
如果数组元素的标示符是字符,则该数组元素的值不会被赋值。
8.json编码函数
json_encode(var)
功能:将数组或者对象转化为json格式的字符串
参数:
Var 被转化的数组或者对象
返回值:返回被转化后的json字符串
json_decode(string,assoc)
功能:将json格式的字符串转化为对象或者数组
参数:
String: 必须,被转化的json字符串
Assoc: 可选。True,json字符串被转化为数组;false,json格式的字符串被转化为对象,默认为false。
返回值:转化成的对象或者数组。
9.explode/implode
explode(separator,string):
功能:将某个字符串,根据某个字符,截取成数组元素,并组成数组。
参数:
Separator 必需 指定的符号
String 操作的字符串
返回值:组成的新数组
如何判断一个文件是图片?
implode(separator,array)
功能:将数组的数组元素以某个特定的符号连成字符串
参数:
Separator:必需 设置的符号
Array: 必需 操作的数组
返回值:由数组元素和特定符号组成的字符串
10.
堆栈函数array_push($a,元素1,元素2); array_pop($a); 返回值:数组元素的个数
队列函数array_unshift($a,元素1,元素2); array_shift();
11.
array_merge(array1,array2,array3...):数组的合并 返回值数组 索引不会覆盖,关联会覆盖
array_merge_recursive (array1,array2,array3...):
注意: 该函数与 array_merge() 函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
12.array_slice(array,start,length,preserve):
功能: 在数组中根据条件取出一段值,并返回
参数:
array 必需。规定数组。
start 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。
如果该值设置为正数,则从前往后开始取。
如果该值设置为负数,则从后向前取。
length 可选。数值。规定被返回数组的长度。
如果该值设置为整数,则返回该数量的元素。
如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。
如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。
起点包含,终点不包含
preserve 可选。规定函数是保留键名还是重置键名。
true - 保留数组元素标示符
false - 默认。重置数组元素标示符
array_splice(array,start,length,value)
功能: 从数组中移除选定的元素,并用新元素取代它。
参数:
array 必需。规定数组。
start 必需。数值。规定删除元素的开始位置。
0 = 第一个元素。
如果该值设置为正数,则从数组中该值指定的偏移量开始移除。
如果该值设置为负数,则从数组末端倒数该值指定的偏移量开始移除。
length 可选。数值。规定被移除的元素个数,也是被返回数组的长度。
如果该值设置为正数,则移除该数量的元素。
如果该值设置为负数,表示终点的位置。
如果该值未设置,则移除从 start 参数设置的位置开始直到数组末端的所有元素。
value 可选。替换的数据。
返回值:被切割掉的数据。
13.排序
sort():升序
rsort():降序
ksort():下标 升序
krsort():下标 降序
14.冒泡排序
思路:第一次处理,完成一个最大(小)值可以到最后。因而,第二次,只需要操作剩下的n-1个元素,操作完,就有两个值在最后被按次序排放好了。依次类推。相当排序还有很多(快速排序:设置i和j,左右开弓,左右交换,左右继续开弓,直至相遇。参考:《数据结构》)