PHP
一个很好的学习手册
https://www.yuque.com/lengyuezuixue/ryz4g2
https://www.runoob.com/php/php-operators.html
基础语法
1.php开始标记
<?php 2.php结束标记(有时候可以省去) ?>3.php可以嵌入到html代码中,类似于javascript嵌入式语言。
4.在一些php语句的结尾要加上“;”表示一句话的结束。
5.注释符号:“//”,“/**/”
变量
变量的声明:
$aa=1;
变量的销毁:
unset($aa);
#变量的命名规则:
1>变量名称严格区分大小写。
2>字母或者下划线开头。
3>php关键字。
变量的引用赋值(类似于c++的指针)
$b=&$a;
变量的类型:
php是一个弱类型的语言。类似于python,所以php对于变量的管理略显宽松。
变量的作用域:
全局变量
<?php
$aa=1;
function num_plus(){
global $aa;
$aa++;
echo $aa;
echo " ";
}
for($i=0;$i<10;$i++,num_plus());
?>
静态变量
<?php
STATIC $aa=1;
function num_plus(){
static $aa;
$aa++;
echo $aa;
echo " ";
}
for($i=0;$i<10;$i++,num_plus());
?>
//这个静态变量没有python中间的静态变量严格,python中定义静态变量时候不能赋值,而php可以。
静态变量和全局变量的区别:
全局变量与全局静态变量的区别:
1.若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
2.若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
3.具有外部链接的静态,可以在所有源文件里调用,除了本文件,其他文件可以通过extern的方式引用。
php的超级全局变量
$GLOBALS 储存全局作用域中的变量
$_SERVER 获取服务器相关信息
$_ENV 获取服务器端环境变量的数组
$_COOKIE 浏览器cookie的操作
$_SESSION 服务端session的操作
$_REQUEST 获取POST和GET请求的参数
$_POST 获取表单的POST请求参数
$_GET 获取表单的GET请求参数
$_FILES 获取上传文件的的变量
$_SERVER['PHP_SELF'] # 当前正在执行脚本的文件名
$_SERVER['SERVER_NAME'] # 当前运行脚本所在服务器主机的名称
$_SERVER['REQUEST_METHOD'] # 访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”
$_SERVER['QUERY_STRING'] # 查询(query)的字符串
$_SERVER['HTTP_HOST'] # 当前请求的 Host: 头部的内容
$_SERVER['HTTP_REFERER'] # 链接到当前页面的前一页面的 URL 地址
$_SERVER['REMOTE_ADDR'] # 正在浏览当前页面用户的 IP 地址
$_SERVER['REMOTE_HOST'] # 正在浏览当前页面用户的主机名
$_SERVER['SCRIPT_FILENAME'] # 当前执行脚本的绝对路径名
$_SERVER['SCRIPT_NAME'] # 包含当前脚本的路径。这在页面需要指向自己时非常有用
$_SERVER['REQUEST_URI'] # 访问此页面所需的 URI。例如,“/index.html”
$_SERVER["HTTP_USER_AGENT"] # 客户的用户代理,一般会提供操作系统和浏览器有关的信息
$_COOKIE
aa.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP处理表单2</title>
</head>
<body>
<form action="first.php" method="post">
名字: <input type="text" name="fname">
年龄: <input type="text" name="age">
<input type="submit" value="提交">
<?php
$value = "my cookie value";
// send a cookie that expires in 24 hours
setcookie("TestCookie",$value, time()+3600*24);
?>
</form>
</body>
first.php
<?php
if($_COOKIE["TestCookie"]=="my cookie value"){
echo "aa";
}
else{
echo "bb";
}
?>
setcookie函数详解
https://www.yuque.com/lengyuezuixue/ryz4g2/bgao62
post上传文件
$_FILES["upload-name"]["name"] 从客户端上传文件的文件名
$_FILES["upload-name"]["type"] 上传文件的MIME类型
$_FILES["upload-name"]["size"] 上传文件大小(以字节为单位)
$_FILES["upload-name"]["tmp_name"] 上传之后,将此文件移动到最终位置之前赋予的临时文件名
$_FILES["upload-name"]["error"] 上传状态码
UPLOAD_ERR_OK: 0 //正常,上传成功
UPLOAD_ERR_INI_SIZE: 1 //上传文件大小超过服务器允许上传的最大值,php.ini中设置upload_max_filesize选项限制的值
UPLOAD_ERR_FORM_SIZE: 2 //上传文件大小超过HTML表单中隐藏域MAX_FILE_SIZE选项指定的值
UPLOAD_ERR_NO_TMP_DIR: 6 //没有找不到临时文件夹
UPLOAD_ERR_CANT_WRITE: 7 //文件写入失败
UPLOAD_ERR_EXTENSION: 8 //php文件上传扩展没有打开
UPLOAD_ERR_PARTIAL: 3 //文件只有部分被上传
变量的变量
<?php
$recipe="spaghetti";
$$recipe="& meatballs";
echo $recipe $spaghetti;
echo $recipe $($spaghetti);
?>
#理应输出应该是:
spaghetti & meatballs
spaghetti & meatballs
但是我运行的时候报错了,估计是版本的问题。
$_REQUEST 变量
预定义的 $_REQUEST 变量包含了 G E T 、 _GET、 GET、_POST 和 C O O K I E 的 内 容 。 _COOKIE 的内容。 COOKIE的内容。_REQUEST 变量可用来收集通过 GET 和 POST 方法发送的表单数据。
欢迎 <?php echo $_REQUEST["fname"]; ?>!<br>
你的年龄是 <?php echo $_REQUEST["age"]; ?> 岁。
常量
常量定义
boolean define(string name,mixed value,[bool case_insensitive])
#如果使用可选参数case_insensitive,并且为True,那么对于后面的常量的引用将不区分大小写。
例子:
<?php
define("CON_INT",100);
echo CON_INT; //输出:100
define("GREETING","Hello you",true);
echo GREETING; //输出:Hello you
echo constant ("Greeting"); //输出:Hello you
?>
操作符
new 对象初始化
三元运算符
另一个条件运算符是"?:"(或三元)运算符 。
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
<?php
$test = 'aaa';
// 普通写法
$username = isset($test) ? $test : 'bb';
echo $username, PHP_EOL;
// PHP 5.3+ 版本写法
$username = $test ?: 'bb';
echo $username, PHP_EOL;
?>
**注意:**PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符 ??,实例如下:
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
组合比较符(PHP7+)
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:
$c = $a <=> $b;
解析如下:
- 如果 $a > b ∗ ∗ , 则 ∗ ∗ b**, 则 ** b∗∗,则∗∗c 的值为 1。
- 如果 $a == b ∗ ∗ , 则 ∗ ∗ b**, 则 ** b∗∗,则∗∗c 的值为 0。
- 如果 $a < b ∗ ∗ , 则 ∗ ∗ b**, 则 ** b∗∗,则∗∗c 的值为 -1。
实例如下:
<?php// 整型echo 1 <=> 1; // 0echo 1 <=> 2; // -1echo 2 <=> 1; // 1 // 浮点型echo 1.5 <=> 1.5; // 0echo 1.5 <=> 2.5; // -1echo 2.5 <=> 1.5; // 1 // 字符串echo "a" <=> "a"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1?>
PHP 比较运算符
比较操作符可以让您比较两个值:
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false |
x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5===“5” 返回 false |
x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true |
x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!==“5” 返回 true |
x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false |
x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false |
x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
PHP 数组运算符
运算符 | 名称 | 描述 |
---|---|---|
x + y | 集合 | x 和 y 的集合 |
x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
x != y | 不相等 | 如果 x 不等于 y,则返回 true |
x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
逻辑操作符的另一种用法:
file_exists("filename.txt") OR echo "File does not exist!";
#php的运算比较是弱比较,“==”,是弱等价,不需要判别类型,而,“===”是强等价,需要判别类型和值。
字符串插入
双引号
解析字符串时变量和转义序列都会被解析。
单引号
解析字符串时变量和转义序列都不会被解析。
大括号
在echo和print中要输出的串中嵌入表示复杂数据类型(如数组或对象)的变量,解析时往往不容易,这个问题可以通过大括号界定变量来解决。
<?php$dd="aa";echo "aa is {$dd}";?>
HEREDOC
PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(Perl、PHP、Python和Ruby)里定义一个字符串的方法。
使用概述:
●必须后接分号,否则编译通不过;
●EOF可以用任意其他字符代替,只需保证结束标识和开始标识一致;
●结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符);
●开始标识可以不带引号或带单双引号,不带引号与带引号效果一致,解释内嵌的变量和转义字符,而带单引号则不解释内嵌的变量和转义符号;
●当内容需要内嵌引导(单引号或双引号)时,不需要加转义符号,本身对单双引号转义;
<?phpecho <<<EOF <h1>我的第一个标题</h1> <p>我的第一个段落。</p>EOF;// 结束需要独立一行且前后不能空格?>
注意:
以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。
开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接,如下:
Plain Text
<?php$name="如约智惠";$a= <<<EOF "abc"$name "123"EOF;// 结束需要独立一行且前后不能空格echo $a;?>
控制结构
if·····else··
while
foreach语句
<?php$links=array("www.apress.com","www.php.net","www.apache.org");echo "<b>online Resources</b>:<br />";foreach($links as $link){ echo "<a href=\"http://$link\">$link</a><br />";}?>
文件包含语句
形式为:
include(/path/to/filename)include "/path/to/filename"
如果启用php配置指令allow_url_fopen,还可以在include()语句中引用一个远程文件。如果文件所在的服务器支持PHP,通过传递必要的键值对(类似于get请求),其所包含的文件也会得到解析。
include "http://远程文件"
确保只包含一次
include_one(filename)
请求文件
require(filname)
其基本与include相同但是也有不同点:
1.无论require()的位置如何,指定文件都会被包含到出现require()脚本中。
2.require()出错后脚本将不执行,但是include()的情况下,脚本将继续执行。
请求一次
require_once()
函数
函数格式
<?php
function assignx($aa,$bb){
$x="qaq";
echo $x."aaa";
}
assignx();
?>
按引用传值
<?php
$cost=100;
$tax=0.1;
function calculatecost(&$cost,$tax){
$cost=$cost+($cost*$tax);
$tax+=4;
}
calculatecost($cost,$tax);
echo "$cost"."\n"."$tax";
?>
使用类型提示
class A{
public $age=10;
}
function test(A $a){
echo $a->age;
}
test(new A());
test只能传实现了A的对象 ,传其他任何参数都会报错
注意点:类型提示只能提示数组 跟类 其他的都会报错
返回多个值
利用列表返回多个值。
<?php
function retrieveUserProfile(){
$usr[]="js";
$usr[]="20201013";
$usr[]="math";
return $usr;
}
list($name,$time,$goodat)=retrieveUserProfile();
echo "name:$name,time:$time,goodat:$goodat";
?>
递归函数
function math($num1,$num2,$num3){
$num3--;
if($num3==0){
return 0;
}
echo "$num1,$num2"."\n";
return math($num2,$num1+$num2,$num3)+$num2;
}
echo math(1,2,5);
数组
标准输入
array()函数接收0个或者多个元素作为输入,返回一个包含这些输入元素的数组,其形式如下:
$ls=array array([key=>value,key1=>value1,key3=>value3])
#等价于
$ls[key]=value;
$ls[key1]=value1;
$ls[key3]=value3;
用list()提取数组
list()函数与array()类似,只是它可以在一次操作中从一个数组中提取多个值,同时为变量赋值。
void list(mixed```)
fgets() 函数
定义和用法
fgets() 函数从打开的文件中返回一行。
fgets() 函数会在到达指定长度( length - 1 )、碰到换行符、读到文件末尾(EOF)时(以先到者为准),停止返回一个新行。
如果失败该函数返回 FALSE。
语法
fgets(file,length)
-
file
-
- 必需。
- 规定要读取的文件。
-
length
-
- 可选。
- 规定要读取的字节数。
-
- 默认是 1024 字节。
实例1
<?php
$file = fopen("test.txt","r");
echo fgets($file);
fclose($file);
?>
实例 2: 按行读取文件
<?php
$file = fopen("test.txt","r");
while(! feof($file))
{
echo fgets($file). "<br />";
}
fclose($file);
?>
range()函数
range函数是一个快速创建数组的简单方法,并且会使用low到high范围内的整数值填充数组。
array range(int low,int high,int step)
is_array()函数
内置函数is_array()可以用判断一个变量是否为一个数组,返回值为true或者false
boolean is_array(mix variable)
输出数组
<?php
$customers=array();
$customers[]=array("11","22","33");
$customers[]=array("bb","cc","dd");
foreach ($customers as $customer){
vprintf("value1:%s\nvalue2:%s\nvalue3:%s\n",$customer);
}
?>
print_r()函数
语法
bool print_r ( mixed $expression [, bool $return ] )
参数说明:
- $expression: 要打印的变量,如果给出的是 string、integer 或 float 类型变量,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
- $return: 可选,如果为 true 则不输出结果,而是将结果赋值给一个变量,false 则直接输出结果。
返回值
$return 如果设为 true 才有返回值,为一个易于理解的字符串信息。
实例
实例
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
print_r ($a);
?>
输出结果为:
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
设置 $return 参数:
实例
<?php
$b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
$results = print_r ($b, true); // $results 包含了 print_r 的输出结果
?>
以上信息没有输出结果,因为输出结果赋值给了 $results 变量。
添加和删除数组元素
在数组头添加元素
array_unshift()函数在数组头部添加元素,所有已有的数值键都会相应的修改,以反映其在数组中的新位置。
int array_unshift(array array,mixed variable[,maxed variable````])
例子
<?php
$a=array("a"=>"red","b"=>"green");
array_unshift($a,"blue");
print_r($a);
?>
定义和用法
array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。
**提示:**您可以插入一个或多个值。
**注释:**数值键名将从 0 开始,以 1 递增。字符串键名将保持不变。
在数组尾添加元素
array_push()函数将值添加到数组的末尾,添加新的值后返回数组中的元素总数。
定义和用法
array_push() 函数向数组尾部插入一个或多个元素。
**提示:**您可以添加一个或者多个值。
**注释:**即使您的数组有字符串键名,您所添加的元素将是数字键名(参见下面的实例)。
语法
array_push(*array,value1,value2...*)
参数 | 描述 |
---|---|
array | 必需。规定一个数组。 |
value1 | 必需。规定要添加的值。 |
value2 | 可选。规定要添加的值。 |
数组头部删除元素
array_shoft()函数删除并将值添加到数组的末尾,添加新的值之后返回数组中的元素的第一个元素。
mixed array_shift(array);
例子
$states=array("aa","bb","vv");
$state=array_shift($states);
从数组尾删除元素
array_pop()函数删除并返回数组的最后一个元素。
mixed array_pop(array array);
定位数组元素
搜索数组
in_array()函数在数组中搜索一个特定值,如果找到这个值返回TRUE,否则返回FALSE。
语法
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
参数 | 描述 |
---|---|
needle | 必需。规定要在数组搜索的值。 |
haystack | 必需。规定要搜索的数组。 |
strict | 可选。如果该参数设置为 TRUE,则 in_array() 函数检查搜索的数据与数组的值的类型是否相同。 |
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland", 23);
if (in_array("23", $people, TRUE))
{
echo "Match found<br>";
}
?>
搜索关键组件
如果在一个数组中找到一个指定的键,函数array_key_exists()返回TRUE,否则返回FALSE,形式如下:
语法
array_key_exists(*key,array*)
参数
参数 | 描述 |
---|---|
key | 必需。规定键名。 |
array | 必需。规定数组。 |
<?php
$a=array("a"=>"red","b"=>"green");
if(array_key_exists("a",$a)){
echo "exist";
}
?>
搜索关联数组的值
array_search()函数在一个数组中搜索一个指定的值,如果找到则返回相应的键,否则返回FALSE,其形式如下:
array_search(*value,array,strict*)
参数 | 描述 |
---|---|
value | 必需。规定在数组中搜索的键值。 |
array | 必需。规定被搜索的数组。 |
strict | 可选。如果该参数被设置为 TRUE,则函数在数组中搜索数据类型和值都一致的元素。可能的值:truefalse - 默认如果设置为 true,则在数组中检查给定值的类型. |
获取数组键
array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有键。
array_keys(array,value,strict)
例子
<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));
?>
获取数组值
array_keys()函数返回一个数组,其中包含所搜索数组中找到的所有值。
array_values(array,value,strict)
例子
<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_values($a));
?>
遍历数组
获取当前数组的键
key()函数返回数组中当前指针所在位置的键。
mixed key(array array)
例子:
<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
$key=key($a);
echo $key;
?>
获取当前数组值
current()函数返回数组中当前指针所在位置的数组值。其形式为:
mixed current(array array)
例子:
<?php
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
$values=current($a);
echo $values;
?>
获取当前数组键和值
each()函数返回数组当前键/值对,并且将指针推进一个位置,其形式如下:
array each(array array)
返回的数组包含4个键,键0和key包含键名,而键1和value包含相应的数据,如果执行each()前指针位于数组末尾,则返回FALSE。
移动数组指针
将指针移动到下一个数组位置。其形式如下:
mixed next(array array)
将指针移动到前一个数组位置
mixed prev(array array)
将指针移动到第一个数组位置
mixed reset(array array)
将指针移动到数组最后一个位置
mixed end(array array)
向函数传递数组值
array_walk()函数将数组中各个元素传递到用户自定义函数。相当于python中的map
语法
array_walk(*array,myfunction,parameter...*)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
myfunction | 必需。用户自定义函数的名称。 |
parameter,… | 可选。规定用户自定义函数的参数,您可以为函数设置一个或多个参数。 |
<?php
function myfunction($value,$key,$p)
{
echo "$key $p $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction","has the value");
?>
count()函数
count()函数返回数组中值的总数。
语法
count(*array,mode*);
#sizeof()函数时count()的别名,他们的功能是一样的
参数 | 描述 |
---|---|
array | 必需。规定要计数的数组。 |
mode | 可选。规定函数的模式。可能的值:0 - 默认。不计算多维数组中的所有元素。1 - 递归地计算数组中元素的数目(计算多维数组中的所有元素)。 |
array_count_values()函数
array_count_values()函数返回一个包含关联键值对的数组。其形式为:
array array_count_values(array)
确定唯一的数组元素
array_unique()函数会删除数组中所有重复的值,返回一个由唯一值组成的数组,其形式为:
array_unique(array)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
sortingtype | 可选。规定排序类型。可能的值:SORT_STRING - 默认。把每一项作为字符串来处理。SORT_REGULAR - 把每一项按常规顺序排列(Standard ASCII,不改变类型)。SORT_NUMERIC - 把每一项作为数字来处理。SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。 |
数组排序
逆置数组元素顺序
array_reverse(array,preserve)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
preserve | 可选。规定是否保留原始数组的键名。 如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。 可能的值:truefalse |
置换数组键和值
array_flip() 函数用于反转/交换数组中的键名和对应关联的键值。
array_flip(array);
例子:
<?php
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$result=array_flip($a1);
print_r($result);
?>
sort()函数
sort(*array,sortingtype*);
参数 | 描述 |
---|---|
array | 必需。规定要进行排序的数组。 |
sortingtype | 可选。规定如何排列数组的元素/项目。可能的值:0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。1 = SORT_NUMERIC - 把每一项作为数字来处理。2 = SORT_STRING - 把每一项作为字符串来处理。3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。 |
asort()函数
asort()函数和sort()函数相同,以升序对数组排序,只不过他将保持键/值的关系。
rsort()函数
rsort()函数与sort()函数相同,只不过它以相反的顺序(降序)对数组元素排序。
arsort()函数
与arsort()一样,arsort()会保持键/值的关联,但是它以逆序对数组排序。
natsort()函数
natsort()函数提供了一种相当于人们平时使用的排序机制。
natcasesort()函数
函数natcasesort()在功能上和natsort()相同,只是它不区分大小写。
ksort()函数
ksort()函数按键对数组排序,如果成功返回TRUE,失败返回FALSE。
krsort()函数
krsort()函数的操作于ksort()函数相同,也按键排序,只不过它以逆序排序。
usort()函数
定义和用法
usort() 使用用户自定义的比较函数对数组进行排序。
语法
usort(*array,myfunction*);
描述 | 参数 |
---|---|
必需。规定要排序的数组。 | array |
可选。一个定义了可调用比较函数的字符串。如果第一个参数 <, =, > 第二个参数,相应地比较函数必须返回一个 <, =, > 0 的整数。 | myfunction |
例子:
<?php
function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$a=array(4,2,8,6);
usort($a,"my_sort");
?>
#用户自定义函数必须接收两个输入参数,根据第一个参数小于。等于或大于第二个参数的不同情况,相应返回一个数。
合并、拆分、接合和分解数组
合并数组
array_merge()函数将数组合并到一起,返回一个联合数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次追加。
array array_merge(arry,arry1,arry2`````)
递归追加数组
array_merge_recursive() 函数用于把一个或多个数组合并为一个数组。
该函数与 array_merge函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
#如果您仅仅向 array_merge_recursive() 函数输入一个数组,结果与 array_merge函数相同,函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引。
合并两个数组
array_combine()函数会生成一个新数组,这个数组由一组提交的键和对应的值组成。
array array_combine(array keys,array values)
例子
<?php
$c=array("a","b","c");
$d=array("1","2","3");
print_r(array_combine($c,$d));
?>
拆分数组
语法
array_slice(*array,start,length,preserve*)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
start | 必需。数值。规定取出元素的开始位置。 0 = 第一个元素。 如果该值设置为正数,则从前往后开始取。如果该值设置为负数,则从后向前取 start 绝对值。 -2 意味着从数组的倒数第二个元素开始。 |
length | 可选。数值。规定被返回数组的长度。 如果该值设置为整数,则返回该数量的元素。如果该值设置为负数,则函数将在举例数组末端这么远的地方终止取出。如果该值未设置,则返回从 start 参数设置的位置开始直到数组末端的所有元素。 |
preserve | 可选。规定函数是保留键名还是重置键名。可能的值:true - 保留键名false - 默认。重置键名 |
例子:
$states=array("1","2","3");
$subset=array_slice($states,1);
echo $subset;
接和数组
语法
array_splice(*array1,start,length,array2*)
参数 | 描述 |
---|---|
array1 | 必需。规定数组。 |
start | 必需。数值。规定删除元素的开始位置。 0 = 第一个元素。 如果该值设置为正数,则从数组中该值指定的偏移量开始移除。如果该值设置为负数,则从数组末端倒数该值指定的偏移量开始移除。 -2 意味着从数组的倒数第二个元素开始。 |
length | 可选。数值。规定被移除的元素个数,也是被返回数组的长度。 如果该值设置为正数,则移除该数量的元素。如果该值设置为负数,则移除从 start 到数组末端倒数 length 为止中间所有的元素。如果该值未设置,则移除从 start 参数设置的位置开始直到数组末端的所有元素。 |
array2 | 可选。规定带有要插入原始数组中元素的数组。如果只有一个元素,则可以设置为字符串,不需要设置为数组。 |
求数组的交集
array_intersect()函数返回一个保留了键的数组,这个数组只由一个数组中出现的且在其他每个输入数组中都出现的值组成。
array array_interset(array1,array2,array3`````)
求关联数组的交集
array_intersect_assoc()于array_intersect()基本一致,但是他在比较的时候还在意了数组的键是否相同,返回了数组值和键相同的情况。
求数组的差集
函数array_diff()返回出现在第一个数组中但是其他输入数组中没有的值。
array array_diff(array1,array2,array3`````)
求关联数组的差集
函数array_diff_assoc()与array_diff()基本相同,只是它在比较的时侯还考虑了数组的键。
返回一组随机的键
array_rand()函数返回数组中的一个或多个键。
array_rand(array,number)
参数 | 描述 |
---|---|
array | 必需。规定数组。 |
number | 可选。规定返回多少个随机的元素。 |
随机洗牌数组元素
shuffle()函数随机地对数组元素重新排序。
shuffle(array)
对数组的值进行求和
array_sum()函数将input_array中的所有值加在一起返回最终的和。
mixed array_sum(array array)
划分数组
array_chunk()函数将input_array分解为一个多维数组,这个多维数组由多个包含size个元素的数组组成。
array_chunk(array,size,preserve_keys);
参数 | 描述 |
---|---|
array | 必需。规定要使用的数组。 |
size | 必需。一个整数,规定每个新数组块包含多少个元素。 |
preserve_key | 可选。可能的值:true - 保留原始数组中的键名。false - 默认。每个新数组块使用从零开始的索引。 |