赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 编程语言

常用的编程语言
C#编程语言基础
C#面向对象与多线程
C#数据及文件操作
JavaScript基础
JavaScript的数据类型和变量
JavaScript的运算符和表达式
JavaScript的基本流程控制
JavaScript的函数
JavaScript对象编程
JavaScript内置对象和方法
JavaScript的浏览器对象和方法
JavaScript访问HTML DOM对象
JavaScript事件驱动编程
JavaScript与CSS样式表
Ajax与PHP
ECMAScript6的新特性
Vue.js前端开发
PHP的常量与变量
PHP的数据类型与转换
PHP的运算符和优先规则
PHP程序的流程控制语句
PHP的数组操作及函数
PHP的字符串处理与函数
PHP自定义函数
PHP的常用系统函数
PHP的图像处理函数
PHP类编程
PHP的DataTime类
PHP处理XML和JSON
PHP的正则表达式
PHP文件和目录处理
PHP表单处理
PHP处理Cookie和Session
PHP文件上传和下载
PHP加密技术
PHP的Socket编程
PHP国际化编码
MySQL数据库基础
MySQL数据库函数
MySQL数据库账户管理
MySQL数据库基本操作
MySQL数据查询
MySQL存储过程和存储函数
MySQL事务处理和触发器
PHP操作MySQL数据库
数据库抽象层PDO
Smarty模板
ThinkPHP框架
Python语言基础
Python语言结构与控制
Python的函数和模块
Python的复合数据类型
Python面向对象编程
Python的文件操作
Python的异常处理
Python的绘图模块
Python的NumPy模块
Python的SciPy模块
Python的SymPy模块
Python的数据处理
Python操作数据库
Python网络编程
Python图像处理
Python机器学习
TensorFlow深度学习
Tensorflow常用函数
TensorFlow用于卷积网络
生成对抗网络GAN
首页 > 专业技术 > 编程语言 > PHP的数组操作及函数
PHP的数组操作及函数

使用变量只能存储一个值,当需要保存很多相同类型的值时就需要使用数组来进行处理。 数组(Array)被定义为具有某种共同特性的元素集合,集合中的所有元素之间由一个特殊的标识符来区分,该标识符通常被称为键(Key),集合中元素的内容通常被称为值(Value)。 PHP中的数组中元素之间可以没有相似性,甚至可以是不同的数据。

1.创建数组:

数组是在程序设计中,把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。 在PHP中创建数组与创建变量一样都不需要声明,主要有两种方式。

1)使用赋值创建数组:

使用赋值方式创建数组是最简单的方式,实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值。语法格式为:
$arrayName[<key>]=value;
其中,arrayName表示数组变量名,value表示元素的值,中括号中的key表示元素的键。在数组中,键用来唯一标识元素,有时也被称为索引或者下标。
PHP对数组的键有如下规定:如果没有指定键,则使用默认键,默认键从0开始,依次累加;如果指定了键,则该元素使用指定的键;如果使用数字或数字型的字符串作为键,则后面的键将以此键为基础开始累加。如果数字是带小数的,按其整数位计算。
示例:使用不带键的赋值方式创建一个数组
<?php
$water[]="纯净水";
$water[]="矿泉水";
$water[]="苏打水";
?>
上述代码执行后会创建一个包含3个元素的$water数组,元素键分别为0、1、2。
示例:使用指定键的赋值方式创建一个数组
<?php
$tea[6]="龙井";
$tea["9"]="碧螺春";
$tea["anxi"]="铁观音";
$tea[]="银针";
$tea[mj]="毛尖";
$tea[y8]="普洱";
?>
上述代码执行后会创建一个名为$tea的数组。键可以使用数字或者字符串,甚至混合两种的形式。由于指定的键不具有规律性,因此非特殊情况下,推荐使用不指定键的方式进行赋值,这样便于使用循环语句遍历数组。

2)使用array()函数创建数组:

PHP可以使用array()函数创建数组。Array()函数接收要成为数组的元素作为参数,多个元素之间使用英文逗号(,)分隔。语法格式:
$arrayName=array(value1[, value2][, ...]);
在使用array()函数创建数组时变量名后面不要“[]”。示例:
<?php
$scores=array(100, 68, 79, 81, 95);
$students=array("zhht", "som", "houxia", "ayhncn", "lily");
?>
使用array()函数创建数组时,同样也可以指定键,指定格式为“key=>value”。示例:
<?php
$tea=array(6=>"龙井", "9"=>"碧螺春", "anxi"=>"铁观音", "银针", mj=>"毛尖", y8=>"普洱");
?>

3)创建多维数组:

与普通数组一样,创建多维数组也有两种方式。示例:
<?php
$one[]="zhht"; //第1行1列
$one[]=98; //第1行2列
$two[]="somboy"; //第2行1列
$two[]=84; //第2行2列
$ary[]=$one;
$ary[]=$two;
?>
先创建了两个数组$one[]和$two[],然后用这两个数组作为$ary[]数组的元素从而建立二维数组。
使用array()函数创建二维数组的方法非常简单,只需要使用多个该函数的嵌套形式即可。示例:
<?php
$cities=array(
array("青岛", "济南", "日照", "威海", "烟台"),
array("长沙", "衡阳", "岳阳"),
array("安阳", "新乡", "郑州", "开封")
);
?>

2.操作数组的内置函数:

函数

描述

array_change_key_case()

返回字符串键名组成的数组,并且键名全部更改为小写或大写

array_chunk()

将一个数组分割为多个数组

array_combine()

创建一个数组,用一个数组的值作为键名,另一个数组的值为键值

array_count_values()

统计数组中所有值出现的次数

array_diff_assoc()

带索引检查计算数组的差集

array_diff_key()

使用键名作比较计算数组的差集

array_diff_uassoc()

使用用户提供的回调函数作索引检查来计算数组的差集

array_diff_ukey()

用回调函数对键名作比较计算数组的差集

array_diff()

计算数组的差集

array_fill_keys()

用指定的值赋给数组中的键作为键值

array_fill()

用指定的值填充数组

array_filter()

用回调函数过滤数组中的元素

array_flip()

交换数组中的键和值

array_intersect_assoc()

带索引检查计算数组的交集

array_intersect_key()

使用键名作比较计算数组的交集

array_intersect_uassoc()

带索引检查计算数组的交集,用回调函数比较索引

array_intersect_ukey()

用回调函数作比较键名来计算数组的交集

array_intersect()

计算数组的交集

array_key_exists()

检查指定的键名或索引是否存在于数组中

array_keys()

返回数组中所有的键名

array_map()

将回调函数作用到指定数组的元素上

array_merge_recursive()

递归地合并一个或多个数组

array_merge()

合并一个或多个数组

array_multisort()

对多个数组或多维数组进行排序

array_pad()

用值将数据填充到指定长度

array_pop()

将数组最后一个元素删除

array_product()

计算数组中所有值的乘积

array_push()

将一个或多个元素追加到数组的末尾

array_rand()

从数组中随机取出一个或多个元素

array_reduce()

用回调函数迭代地将数组简化为单一的值

array_reverse()

返回一个元素顺序相反的数组

array_search()

在数组中搜索指定的值,如果成功则返回相应的键名

array_shift()

将数组开头的元素移出数组

array_slice()

从数组中取出一段作为一个新数组,原数组不变

array_splice()

把数组中的一部分去掉并用其他值取代

array_sum()

计算数组中所有值的和

array_udiff_assoc()

带索引检查计算数组的差集,用回调函数作比较数据

array_udiff_uassoc()

带索引检查计算数组的差集,用回调函数作比较数据和索引

array_udiff()

用回调函数作比较数据来计算数组的差集

array_uintersect_assoc()

带索引检查计算数组的交集,用回调函数作比较数据

array_intersect_uassoc()

带索引检查计算数组的交集,用回调函数比较数据和索引

array_uintersect()

计算数组的交集,用回调函数作比较数据

array_unique()

移除数组中重复的值

array_unshift()

在数组开头插入一个或多个元素

array_values()

返回数组中所有的值

array_walk_recursive()

对数组中的每个成员递归地应用用户自定义函数

array_walk()

对数组中的每个成员应用用户自定义函数

array()

新建一个数组

arsort()

对数组进行逆向排序并保持索引关系

assort()

对数组进行排序并保持索引关系

compact()

建立一个数组,包括变量名和它们的值

count()

计算数组中的元素数目或对象中的属性个数

current()

返回数组中的当前元素

each()

返回数组中当前的键/值对并将数组指针向前移动一步

end()

将数组的内部指针指向最后一个元素

extract()

从数组中将变量导入到当前的符号表

in_array()

检查数组中是否存在某个值

key()

从复合数组中取得键名

krsort()

对数组按照键名逆向排序

ksort()

对数组按照键名排序

list()

把数组中的值赋给一些变量

natcasesort()

用自然排序算法对数组进行不区分大小写字母的排序

natsort()

用自然排序算法对数组排序

next()

将数组中的内部指针向前移动一位

pos()

current()的别名

prev()

将数组中的内部指针倒回一位

range()

建立一个包含指定范围元素的数组

reset()

将数组的内部指针指向第一个元素

rsort()

对数组逆向排序

shuffle()

将数组打乱

sizeof()

count()的别名

sort()

对数组排序

uasort()

使用用户自定义的比较函数对数组中的键值进行排序并保持索引关联

uksort()

使用用户自定义的比较函数对数组中的键名进行排序

usort()

使用用户自定义的比较函数对数组中的值进行排序

3.使用数组:

1)测试数组:

使用is_array()函数可以测试一个变量是否为数组。语法格式为:
bool is_array(mixed $variable)
如果$variable是数组类型(即使数组中一个元素也没有)则返回true,否则返回false。示例:
<?php
$color="红,黑,白,黄,蓝,绿";
if (!is_array($color));
{
echo "\$color不是数组,正在转换...";
$color=array();
if (is_array($color)) echo "\n转换成功,继续执行";
}
?>

2)输出数组内容:

输出一个数组的内容,最简单的方法就是使用print_r()函数,该函数将会按照一定格式显示数组的键和值。语法格式为:
bool print_r (mixed $arrayname [, bool $return])
参数$arrayname是数组的名称,第2个参数设置为true,函数将返回数组的内容,而不是输出。

4.遍历数组:

在PHP中,数组按照键可以分为顺序数组与非顺序数组。所谓顺序属性,是指数组中所有的键是连续的整数;而非顺序数组则是指数组中的键不完全是整数,或者不是连续的整数。

1)foreach语句遍历:

如果是遍历无顺序的数组,由于数组中的键没有规律可循,所以要使用foreach循环语句。语法格式为:
foreach ($array as $key=>$value) {
   //循环体
}
其中,$array表示数组,$key表示键,$value表示值。示例:
foreach ($cores as $name=>$s) {
  echo “$name的积分是$s \n”;
}
对于顺序数组也可以使用foreach循环语句遍历。
foreach ($keys as $id=>$keyname) {
  echo “$keyname的索引是$id \n”;
}

2)For语句遍历:

遍历顺序数组时,只要知道数组的第1个键值和数组的总长度,就可以使用循环语句遍历。顺序数组的第1个键默认值是0,但也可以被用户设置为任意整数。为了确定第1个键值是多少,可以使用key()函数。语法格式为:
mixed key (array &$array)
函数返回目标数组$array中位于当前指针位置的键,第一次调用时自然返回位于第一个位置的键。注意,使用key()函数不会移动指针。对于数组的长度,可以使用count()函数统计。示例:
<?php
$drink=array(8866=>"纯净水","矿物质水","果汁","茶饮料");
$min=key($drink);
$length=count($drink);
$max=$min+$length-1;
for ($i=$min; $i<=$max; $i++);
{
echo ”编号:$i, 名称:$drink[$i] \n”;
}
?>

3)Each()函数遍历:

PHP的数组函数each()遍历数组。语法格式:
array each (array &$array)
执行后,该函数返回数组的当前“键-值”对,并将指针向下移动一个位置;移动到最后一个元素时返回false。返回的数组包含4个键,键0和key包含键名,而键1和value包含相应的数据。示例:
<?php
$fruit=array(cm=>"草莓",xg=>"西瓜",gj=>"柑橘");
$aa=each($fruit);
print_r($aa);
?>
使用print_r()输出数组内容为:
Array
(
  [1]=>草莓
  [value]=>草莓
  [0]=>cm
  [key]=>cm
)
使用while语句就可以遍历数组。示例:
while ($item=each($fruit))
{
  echo "水果名称:$item[value], 简称:$item[key] \n";
}
Each()函数还可以跟list()函数一块使用实现数组的遍历。示例:
while (list($key,$value)=each($fruit))
{
  echo "水果名称:$value, 简称:$key \n";
}

4)遍历数组函数:

除了上面的函数,PHP还提供了其他一些遍历数组时可用使用的函数,如表。


函数

说明

reset()

该函数用来将数组的指针设置回数组的开始位置。经常在排序结束时使用。

current()

该函数返回位于数组当前指针位置的数组值,不移动指针。

end()

该函数将指针移向数组的最后一个位置,并返回最后一个元素。

next()

该函数返回紧接着放在当前数组指针的下一个位置的数组值

prev()

该函数返回位于当前指针前一个位置的数组值,如果已位于第一个位置返回false

array_reverse()

该函数将数组中元素的顺序逆置。如果设置可选参数为true,则保持键映射,否则重新摆放后的各个值将对应于先前该位置上的相应值

array_flip()

该函数将使数组中键及其相应值互换角色

5.数组计算:

1)计算元素总数:

数组在经过初始化和多次操作之后,其中的元素数量可能会发生变化。为了获取数组中元素的数量,可以使用count()函数。语法格式为:
int count(mixed $var [, int $mode])
$mode是可选参数,用于设置是否进行递归计数,如果设置其值为1,则进行递归计数;如果不设置该参数,或者设置其值为0,则不进行递归计数。示例:
$result1=count($student);
$result2=count($student, 1);
如果数组元素也是数组,递归计数会计算其中的总数。

2)计算元素出现的频率:

在PHP中,数组元素是允许重复的,使用array_count_values()函数可以计算每个元素出现的频率。语法格式为:
array array_count_values(array $input)
该函数返回一个包含“键-值”对的数组,其中键表示$input数组中元素的值,而值则是该元素在数组中出现的次数。示例:
<?php
$keys=array(2012, "奥运","电影",2012, "安卓", "计算机", "安卓");
$result=array_count_values( $keys); //统计$keys数组中的元素出现频率
while (list($key,$value)=each($result))
{
  echo "关键字[$key]一共搜索 $value次 \n";
}
?>

3)计算出现的所有元素:

可以使用array_unique()函数实现数组中元素的唯一性,语法格式为:
array array_unique(array $input_array)
该函数返回一个由$input_array数组中唯一值所组成的数组。

6.数组元素操作:

在PHP中,针对数组元素的操作主要有增加、删除、定位和提取。PHP为这些操作提供了很多内置函数。

1)增加元素:

要向数组中增加一个元素,最简单的操作就是直接赋值。示例:
$color[]="红色"; //使用默认键添加元素
$color['red']="红色"; //使用字符串键添加元素
$color[2]="红色"; //使用数字键添加元素
PHP还提供了3个用于实现增加数组元素的函数。
①array_push()函数:
array_push()函数可以向目标数组的末尾添加一到多个元素。语法格式:
int array_push(array $target_array, mixed $variable [, mixed $variable ...])
该函数返回添加元素后数组的新长度。
②array_unshift()函数:
array_unshift()函数可以将一个或多个元素添加到数组的开始位置。语法格式:
int array_unshift(array $target_array, mixed $variable [, mixed $variable ...])
该函数同样返回添加元素后数组的新长度。
③array_pad()函数:
array_pad()函数可以向数组中填充指定元素,直到数组长度达到指定大小为止。语法格式:
int array_pad(array $target_array, integer $length, mixed $pad_value)
如果$length参数为正值,则表示将指定元素填充到数组的右侧;为负值时表示将元素填充到数组的左侧。如果$length参数的绝对值小于等于数组的当前长度,则不执行操作。示例:
$new_letters=array_pad($letters, 4, "*");
$new_letters=array_pad($letters, -4, "*");

2)删除元素:

要从数组中删除元素,最常用的是array_pop()函数和array_shift()函数。
①array_pop()函数:
array_pop()函数可以从目标数组中取出最后一个元素。语法格式:
mixed array_pop(array $target_array)
删除元素后会将$target_array数组的长度减一,并返回取出的元素。如果$target_array为空或者不是数组将返回null。示例:
$result=array_pop($letter);
②array_shift()函数:
array_shift()函数可以从目标数组中取出第一个元素。语法格式:
mixed array_shift(array $target_array)
注意,取出第1个元素后数组中数字类型的键将自动进行重新调整,非数字类型的键不受影响。同样,如果参数为空或者不是数组将返回null。

3)定位元素:

定位元素是指对数组中的元素进行有效的搜索、筛选和查找,并最终返回符合条件的元素。
①array_keys()函数:
array_keys()函数可以返回数组中所有由键组成的数组。语法格式:
array  array_keys(array $target_array[, mixed $search_value])
通过$search_value可选参数可以指定搜索值,此时将只返回与该值相等的元素。
$result1=array_keys($scores); //返回带键的数组
$result2=array_keys($scores, 100); //返回带键,且值为100的数组
②in_array()函数:
in_array()函数可以在目标数组中查找指定值对应的元素。语法格式:
bool  in_array(mixed $needle, array $haystack [, bool $strict])
执行时,会先在$haystack数组中搜索$needle(区分大小写),如果找到则返回true,否则返回false。示例:
var_dump(in_array("hello", $words)); //$words数组中查找hello字符串,区分大小写
in_array()函数的第3个参数$strict用于设置是否在搜索时考虑数据类型,如果不设置此参数,则默认不考虑数据类型,如果设置其为1或true,则考虑数据类型。
$result2=in_array(100, $scores, true);
③array_search()函数:
array_search()函数可以在目标数组中查找指定值并返回它的键。语法格式:
array  array_search(mixed $needle, array $haystack [, bool $strict])
如果在$haystack数组中找到了值$needle,则返回其值,否则返回false。可选参数$strict用于设置是否在搜索时考虑数据类型。注意,如果多个键对应相同的值,只返回第一个键。
$name=array_search(100, $scores); //查找数组$scores中是否包含100这个值
④array_values()函数:
array_values()函数通常用于为数组重新建立索引,它可以返回数组中的所有值,并自动为返回的数组提供数值索引。语法格式:
array  array_values( array $target_array)
一个数组使用的键没有规律,想输出它包含的元素,就可以用array_values()函数将元素的值放到一个新的数组中再遍历。使用array_values()函数返回的新数组有利于对数组进行操作,例如遍历和排序。
⑤array_key_exists()函数:
array_key_exists()函数可以判断某个键是否属于指定数组。语法格式:
array  array_key_exists( mixed $key, array $target_array)
如果key属于$target_array数组则返回true,否则返回false。示例:
$result2=array_key_exists('admin', $scores);

4)提取元素:

PHP提供了4个函数用于从多个数组中提取其他数组中没有的元素和提取共有的元素。
①array_diff()函数:
array_diff()函数用于从某个数组中提取其他指定数组中不包含的元素。语法格式:
array  array_diff(array $input_array1, array $input_array2[, ..., array $input_arrayN])
该函数以$input_array1为基础数组,返回$input_array1中不被其他数组所包含的元素。示例:
$result2=array_diff($user1, $user2);
②array_diff_assoc()函数:
array_diff_assoc()函数的作用与array_diff()函数相同,不同之处在于它在比较时是使用“键-值”对,而不只是值。语法格式:
array  array_diff_assoc(array $input_array1, array $input_array2[, ..., array $input_arrayN])
③array_intersect()函数:
array_intersect()函数用于提取多个数组中都包含的元素,并将这些元素合并成一个数组。语法格式:
array  array_intersect(array $input_array1, array $input_array2[, ..., array $input_arrayN])
④array_intersect_assoc()函数:
array_intersect_assoc()函数与array_intersect()函数作用相同,不同之处在于它在比较元素是否相同时比较的不仅仅是值,而是“键-值”对。语法格式:
array  array_intersect_assoc(array $input_array1, array $input_array2[, ..., array $input_arrayN])

7.数组操作:

PHP提供了多达110个操作数组的内置函数方便开发人员的调用。

1)截取数组:

PHP中不仅可以从一个数组中截取掉一部分元素,还可以使用其他元素填充被截取掉的部分。
①array_slice()函数:
array_slice()函数可以从目标数组中截取一部分元素。语法格式:
array  array_slice(array $array, int $offset[, int $length[, bool $preserve_keys]])
参数含义为:
·$offset用于指定起始位置。如果$offset为正,则将从$input_array数组中距离数组开头的$offset位置开始截取;如果$offset为负,则将从$input_array数组中距离数组末尾的$offset位置开始截取。
·$length用于指定截取长度。如果 $length为正,则会在距数组开头的$offset+ $length位置结束截取;如果 $length为负,则在距数组开头的count($input_array)- $length位置结束截取;如果省略 $length,则将从$offset开始一直截取到$input_array数组的末尾。
·$preserve_keys用于设置是否重置数组的键。
截取时包含起始位置的元素,但不包括结束位置的元素。另外,数组中的元素位置从0开始计算。示例:
$result=array_slice($cities, -2, 1);
②array_splice()函数:
array_splice()函数的功能与array_slice()函数相同,但它是将目标数组中的一部分元素截取出来,目标数组本身只留下未截取的元素。语法格式:
array  array_splice(array &$input, int $offset[, int $length[, array $replacement]])
参数$offset和$length与array_slice()函数相同。该函数的可选参数$replacement是一个数组,如果设置了此参数,则会使用此数组中的元素取代目标数组中被去掉的那部分。示例:
$result=array_splice($cities, 2, 2, $newcities);

2)合并数组:

数组的合并比截取复杂,因为在合并时,多个数组中可能出现相同的“键-值”对,因此如何处理它们是合并的关键。
①array_combine()函数:
array_combine()函数可以将两个大小相等且不为空的数组组合成一个数组。语法格式:
array  array_combine(array $keys, array $values)
两个数组的组合方式为,将第一个数组的值作为新数组的键,而将第二个数组的值作为新数组的值。最后返回新数组,如果两个数组的单元数不同或者数组为空时返回false。示例:
$result=array_combine($color_en, $color_cn);
②array_merge()函数:
array_merge()函数可以将多个数组的元素合并起来。语法格式:
array  array_merge(array $input_array1, array $input_array2[, ..., array $input_arrayN])
合并时array_merge()函数会将后面所有数组中的元素都依次附加到第一个数组的末尾,最后返回新生成的数组。
该函数在附加时,如果数组元素使用的是数字键,则直接附加此元素,并使用默认值重新生成键;如果使用的是关联键(即非数字键),则会先在前面的元素中查找是否已存在此关联键,如果存在,则替换该键所对应的值,如果不存在,则附加此元素。示例:
$result=array_merge($cities1, $cities2, $cities3);
③array_merge_recursive()函数:
array_merge_recursive()函数的功能与array_merge()函数相似,不同的是当存在相同的关联键时,array_merge()函数将使用后续附加的值替换原来的值;而array_merge_recursive()函数则将该键作为一个数组名,将该关联键所对应的多个值作为此数组的元素。语法格式:
array  array_merge_recursive(array $input_array1, array $input_array2[, ..., array $input_arrayN])

8.数组排序:

PHP支持的数据排序方式很多,像按键排序、按值排序、关联排序或者自定义排序等。

1)按值排序:

很多排序算法都属于按值排序,例如冒泡排序、插入排序和选择排序等,即将数组中所有元素的值作为排序依据,然后按照升序或者降序进行排列。
①sort()函数:
sort()函数可以对目标数组进行排序,其排序方式是按元素值由低到高进行的。语法格式为:
bool sort(array $array [, int $sort_flags])
排序成功后返回true,否则返回false。$sort_flags可选参数有如下值:
·SORT_NUMBERIC:按数值排序,有利于对整数或浮点数排序。
·SORT_REGULAR:按自然顺序进行排序。
·SORT_STRING:按相应的ASCII值进行排序,适用于字符串元素。
示例:
sort($words, SORT_STRING);
②rsort()函数:
rsort()函数的功能与sort()类似,只不过rsort()函数以相反的顺序对数组元素进行排序。语法格式为:
bool rsort(array $array [, int $sort_flags])
排序成功后返回true,否则返回false。参数含义与$sort函数相同。
③natsort()函数:
natsort()函数可以按值排序字符串中的数字。语法格式为:
void natsort(array $target_array)
④natcasesort()函数:
natcasesort()函数在功能上虞natsort()函数函数差不多,只是natcasesort()函数在排序时不区分大小写。语法格式:
bool natcasesort(array $array)

2)按键排序:

数组的按键排序要比按值排序简单。
①ksort()函数:
ksort()函数可以按键对数组进行排序。语法格式:
bool ksort(array $array[, int $sort_flags])
其中,$array表示要排序的数组,可选参数sort_flags与sort()函数中的作用相同。
②krsort()函数:
krsort()函数在功能上与ksort()函数相同,只不过krsort()函数以相反的顺序对数组进行排序。语法格式:
bool krsort(array $array[, int $sort_flags])
其中,$array表示要排序的数组,可选参数sort_flags与sort()函数中的作用相同。

3)关联排序:

Sort()函数按值对数组排序,但是排序后元素的键被重新生成。PHP也提供了排序保持“键-值”对的函数。
①asort()函数:
asort()函数可以实现数组排序时其键也跟随一起移动。语法格式:
bool asort(array $array[, int $sort_flags])
函数中的参数与sort()函数相同。
②arsort()函数:
arsort()函数在功能上与asort()函数相同,只不过arsort()函数以相反的顺序对数组进行排序。语法格式:
bool arsort(array $array[, int $sort_flags])
函数中的参数与sort()函数相同。

4)级联排序:

级联排序,是指以一个主数组为依据同时对多个数组进行排序。PHP使用array_multisort()函数实现级联排序。语法格式为:
bool array_multisort(array $array[, mixed $org1 [, mixed $org2]][, array $arg...])
在该函数中除第一个参数必须是一个数组外,其他参数可以是数组或者是下面两种排序标志。
排序顺序标志:
·SORT_ASC:按照上升顺序排序。
·SORT_DESC:按照下降顺序排序。
排序类型标志:
·SORT_REGULAR:将元素按照通常方法比较。
·SORT_NUMERIC:将元素按照数值比较。
·SORT_STRING:将元素按照字符串比较。
array_multisort()函数主要用于多个数组之间的级联排序,其中第一个数组为主要数组,后面的数组中的元素与第一个数组中的元素一一对应。这样当第一个数组中的元素位置发生变化后,后面的数组中的元素也跟着变换位置。示例:
array_multisort($letters, SORT_DESC, SORT_STRING, $words, $cities)
如果使用array_multisort()函数对多个数组进行级联排序,则必须保证多个数组的元素个数一样,否则该函数不会执行任何操作。

5)自定义排序:

虽然PHP提供了很多排序方式和排序函数,但实际应用时仍然可能无法满足排序要求,比如对数组按字符串长度排序,按日期排序,或者按数字的奇偶性排序等。
PHP提供了一个usort()的函数,允许用户编写自定义比较算法对数组进行排序。语法格式:
bool usort(array $array, callback $cmp_function)
其中,$array参数是要排序的数据,$cmp_function参数是自定义排序函数的名称。$cmp_function函数必须在第一个参数被认为小于、等于或大于第二个参数时分别返回一个小于、等于或大于零的整数。示例:
<?php
function Compare($str1, $str2){ //自定义排序函数
if (($str1%2==0)($str2%2==0)) //第一个数和第二个数都是偶数
{
if ($str1>str2) return -1;
else return 1;
}
if ($str1%2==0) return 1; //判断第1个数是否偶数
if ($str2%2==0) return -1; //判断第2个数是否偶数
Return ($str2>$str1)?1:-1; //判断两个数的大小关系
}
$scores=array(64, 78, 51, 83, 97, 60, 87, 91, 100, 17, 62);
usort($scrres, 'Compare');
?>

9.PHP5内置数组:

PHP提供了内置数组,也称为预定数组,这些数组变量包含了来自Web服务器、运行环境和用户输入的数据。这些数组在全局范围内自动生效,因此通常被称为自动全局变量或者超全局变量,常用的有10个内置数组。

1)$GLOBALS(Global变量):

包含一个引用指向每个当前脚本的全局范围内有效的变量。

2)$_SERVER(服务器变量):

变量由Web服务器设定或者直接与当前脚本的执行环境相关联。

3)$_GET(HTTP GET变量)

经由URL请求提交至脚本的变量。

4)$_POST(HTTP POST变量):

经由HTTP POST方法提交至脚本的变量。

5)$_COOKIE(HTTP Cookies):

经由HTTP Cookies方法提交至脚本的变量。

6)$_FILES(HTTP文件上传变量):

经由HTTP POST文件上传而提交至脚本的变量。

7)$_EVN(环境变量):

执行环境提交至脚本的变量。

8)$_REQUEST(Request变量):

经由GET、POST和COOKIE机制提交至脚本的变量,该数组并不值得信任,所有包含在该数组中的变量的存在与否以及变量的顺序均按照php.ini中的variables_order配置指示来定义。

9)$_SESSION(Session变量):

当前注册给脚本会话的变量。

10)$php_errormsg(前一个错误信息):

包含PHP产生的上一个错误消息内容的变量。该变量在发生错误并且track_errors选项打开(默认关闭)后才有效。
其中$_SERVER是一个包含头信息、路径和脚本位置的数组,可以直接访问。
访问格式:$_SERVER["信息名称"]  或  $_SERVER['信息名称']
下表列出具体的信息名称及含义:


信息名称

含义

PHP_SELF

当前正在执行脚本的文件名,与document root相关

argv

传递给该脚本的参数,当调用GET方法时该变量包含请求的数据

argc

包含传递给程序的命令行参数的个数(如果运行在命令行模式)

GATEWAY_INTERFACE

服务器使用的CGI规范的版本

SERVER_NAME

当前运行脚本所在服务器主机的名称,如果是虚拟主机与设定值决定

SERVER_SOFTWARE

服务器标识的字串,在响应请求时的头信息中给出

SERVER_PROTOCOL

请求页面时通信协议的名称和版本,如HTTP/1.0

REQUEST_METHOD

访问页面时请求的方法,如GET、HEAD、POST、PUT

REQUEST_TIME

请求开始时的时间戳

QUERY_STRING

查询的字符串,URL中第一个问号之后的内容

DOCUMENT_ROOT

当前运行脚本所在的文档根目录,在服务器配置文件中定义

HTTP_ACCEPT

当前请求的Accept:头信息的内容

HTTP_ACCEPT_CHARSET

当前请求的Accept-Charset:头信息的内容,如utf-8

HTTP_ACCEPT_ENCODING

当前请求的Accept-Encoding:头信息的内容,如gzip

HTTP_ACCEPT_LANGUAGE

当前请求的Accept-Language:头信息的内容,如en

HTTP_CONNECTION

当前请求的Connection:头信息的内容,如Keep-Alive

HTTP_HOST

当前请求的Host:头信息的内容

HTTP_REFERER

链接到当前页面的前一页面的URL地址,有些可以手工修改此变量

HTTP_USER_AGENT

当前请求的User-Agent:头信息的内容,访问该页面的用户代理信息

HTTPS

如果脚本是通过HTTPS协议被访问,则被设为一个非空的值

REMOTE_ADDR

正在浏览当前页面用户的IP地址,用于记录访问用户的IP

REMOTE_HOST

正在浏览当前页面用户的主机名,反向域名解析基于REMOTE_ADDR

REMOTE_PORT

用户连接到服务器时所使用的端口

SCRIPT_FILENAME

当前使用脚本的绝对路径名

SERVER_ADMIN

APACHE服务器配置文件中的SERVER_ADMIN参数,或虚拟主机的值

SERVER_PORT

服务器所使用的端口,默认80,若使用SSL则为用户设置的HTTP口

SERVER_SIGNATURE

包含服务器版本和虚拟主机名的字符串

PATH_TRANSLATED

当前脚本所在文件系统的基本路径,服务器虚拟到真实路径的映射

SCRIPT_NAME

包含当前脚本的路径,__FILE__包含当前文件的绝对路径和文件名

REQUEST_URI

访问此页面所需的URI,如 /index.html

PHP_AUTH_DIGEST

当作为APACHE模块运行时,被设置为客户端发送的Authorization HTTP头内容

PHP_AUTH_USER

当PHP运行在APACHE或IIS模块方式下,并且正在使用HTTP认证功能,此变量是用户输入的用户名

PHP_AUTH_PW

当PHP运行在APACHE或IIS模块方式下,并且正在使用HTTP认证功能,此变量是用户输入的密码

AUTH_TYPE

当PHP运行在APACHE或IIS模块方式下,并且正在使用HTTP认证功能,此变量是认证的类型

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659