分类目录归档:php

主要更新PHP相关的文章

spl_autoload_register()函数的使用与介绍、跟__autoload()有什么区别

__autoload()函数spl_autoload_register()函数都是用来自动加载的有什么区别呢?

第一个index.php

加载test1.php
加载test2.php

下面看下test1.php

下面看下test2.php

修改include为自动加载 如果__autoload 函数加载两次会报致命错误

 

可以自动加载下面来试下spl_autoload_register()函数

spl_autoload_register()函数可以加载多次

PHP range()函数定义和用法

php中range()函数定义和用法

典型用法如下

例子:建立1-9的9个数字的数组(骰子)

$die = range(1,9);

建立0-100所有双数的数组

$even  = (0,100,2);//步长为2

这个函数不仅仅可以用作数字,还可以用作字母.

$words = range(‘A’,’Z’);

将建立包含A到Z的的所有字母的数组.此处可以用于生成验证码函数.

range() 函数创建并返回一个包含指定范围的元素的数组。

参数 描述
first 必需。规定数组元素的最小值。
second 必需。规定数组元素的最大值。
step 可选。规定元素之间的步进制。默认是 1。

注释:该参数是 PHP 5 中加入的。

输出:

例子 2

输出:

例子 3

输出:

php Curl post json数据

通常我们用curl post或者get 直接请求
有时也会用到 发送json数据的时候
这里给下代码

php怎么把gbk编码转成utf8

php怎么把gbk编码转成utf8

<?php

@header(“Content-
type:text/html;charset=GB2312”);echo $str= ‘你好,这里是卖咖啡!’;echo ‘<br />’;echo iconv(‘GB2312’, ‘UTF-8’, $str);
//将字符串的编码从GB2312转到UTF-8echo ‘<br />’;echo iconv_substr($str, 1, 1, ‘GB2312’); //按字符个数截取而非字节
print_r(iconv_get_encoding()); //得到当前页面编码信息echo iconv_strlen($str, ‘GB2312’); //得到设定编码的字符串长
度?>

注意:确保U

php怎样把utf8转换为gbk<?php@header(“Content-type:text/html;charset=UTF-8”);echo $str= ‘你好,这里是卖咖啡!’;echo
‘<br />’;echo iconv(“UTF-8″,”gbk//TRANSLIT”,$str);; //将字符串的编码从UTF-8转到GB2312

echo ‘<br />’;echo
iconv_substr($str, 1, 1, ‘UTF-8’); //按字符个数截取而非字节print_r(iconv_get_encoding()); //得到当前页面编码信息
echo iconv_strlen($str, ‘UTF-8’); //得到设定编码的字符串长度?>

如果是gbk转换为utf8

nicode编码跟文本编码一样,运行是才不会出现错误

让你的 PHP 7 更快 (GCC PGO)

我们一直致力于提升PHP7的性能,  上个月我们注意到GCC的PGO能在Wordpress上能带来近10%的性能提升,  这个让我们很激动.

然而,  PGO正如名字所说(Profile Guided Optimization 有兴趣的可以Google), 他需要用一些用例来获得反馈, 也就是说这个优化是需要和一个特定的场景绑定的.

你对一个场景的优化, 也许在另外一个场景就事与愿违了.  它不是一个通用的优化. 所以我们不能简单的就包含这些优化, 也无法直接发布PGO编译后的PHP7.

当然, 我们正在尝试从PGO找出一些共性的优化,  然后手工Apply到PHP7上去, 但这个很明显不能做到针对一个场景的特别优化所能达到的效果,  所以我决定写这篇文章简单介绍下怎么使用PGO来编译PHP7, 让你编译的PHP7能特别的让你自己的独立的应用变得更快.

首先,  要决定的就是拿什么场景去Feedback GCC,  我们一般都会选择: 在你要优化的场景中: 访问量最大的, 耗时最多的, 资源消耗最重的一个页面.

拿Wordpress为例,  我们选择Wordpress的首页(因为首页往往是访问量最大的).

我们以我的机器为例:

1
2
Intel(R) Xeon(R) CPU           X5687  @ 3.60GHz X 16(超线程),
48G Memory

php-fpm 采用固定32个worker, opcache采用默认的配置(一定要记得加载opcache)

以wordpress 4.1为优化场景..

首先我们来测试下目前WP在PHP7的性能(ab -n 10000 -c 100):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ ab -n 10000 -c 100 http://inf-dev-maybach.weibo.com:8000/wordpress/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
 
Benchmarking inf-dev-maybach.weibo.com (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
 
Server Software:        nginx/1.7.12
Server Hostname:        inf-dev-maybach.weibo.com
Server Port:            8000
 
Document Path:          /wordpress/
Document Length:        9048 bytes
 
Concurrency Level:      100
Time taken for tests:   8.957 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      92860000 bytes
HTML transferred:       90480000 bytes
Requests per second:    1116.48 [#/sec] (mean)
Time per request:       89.567 [ms] (mean)
Time per request:       0.896 [ms] (mean, across all concurrent requests)
Transfer rate:          10124.65 [Kbytes/sec] received

可见Wordpress 4.1 目前在这个机器上, 首页的QPS可以到1116.48. 也就是每秒钟可以处理这么多个对首页的请求,

现在, 让我们开始教GCC, 让他编译出跑Wordpress4.1更快的PHP7来,  首先要求GCC 4.0以上的版本, 不过我建议大家使用GCC-4.8以上的版本(现在都GCC-5.1了).

第一步, 自然是下载PHP7的源代码了,  然后做./configure. 这些都没什么区别

接下来就是有区别的地方了, 我们要首先第一遍编译PHP7, 让它生成会产生profile数据的可执行文件:

1
make prof-gen

注意, 我们用到了prof-gen参数(这个是PHP7的Makefile特有的, 不要尝试在其他项目上也这么搞哈 :) )

然后, 让我们开始训练GCC:

1
$ sapi/cgi/php-cgi -T 100 /home/huixinchen/local/www/htdocs/wordpress/index.php >/dev/null

也就是让php-cgi跑100遍wordpress的首页, 从而生成一些在这个过程中的profile信息.

然后, 我们开始第二次编译PHP7.

1
2
make prof-clean
make prof-use && make install

好的, 就这么简单,  PGO编译完成了,  现在我们看看PGO编译以后的PHP7的性能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$ ab -n10000 -c 100 http://inf-dev-maybach.weibo.com:8000/wordpress/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
 
Benchmarking inf-dev-maybach.weibo.com (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
 
Server Software:        nginx/1.7.12
Server Hostname:        inf-dev-maybach.weibo.com
Server Port:            8000
 
Document Path:          /wordpress/
Document Length:        9048 bytes
 
Concurrency Level:      100
Time taken for tests:   8.391 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      92860000 bytes
HTML transferred:       90480000 bytes
Requests per second:    1191.78 [#/sec] (mean)
Time per request:       83.908 [ms] (mean)
Time per request:       0.839 [ms] (mean, across all concurrent requests)
Transfer rate:          10807.45 [Kbytes/sec] received

现在每秒钟可以处理1191.78个QPS了,  提升是~7%.  还不赖哈(咦, 你不是说10%么? 怎么成7%了?  呵呵, 正如我之前说过, 我们尝试分析PGO都做了些什么优化, 然后把一些通用的优化手工Apply到PHP7中. 所以也就是说, 那~3%的比较通用的优化已经包含到了PHP7里面了, 当然这个工作还在继续).

于是就这么简单, 大家可以用自己的产品的经典场景来训练GCC, 简单几步, 获得提升, 何乐而不为呢

php中常见的字符串函数很有必要学会的哦

字符串函数

更多强大的字符串处理函数,参见 POSIX 正则表达式函数和 Perl 兼容正则表达式函数。

Table of Contents
addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
addslashes — 使用反斜线引用字符串
bin2hex — 将二进制数据转换成十六进制表示
chop — rtrim 的别名
chr — 返回指定的字符
chunk_split — 将字符串分割成小块
convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种
convert_uudecode — 解码一个 uuencode 编码的字符串
convert_uuencode — 使用 uuencode 编码一个字符串
count_chars — 返回字符串所用字符的信息
crc32 — 计算一个字符串的 crc32 多项式
crypt — 单向字符串散列
echo — 输出一个或多个字符串
explode — 使用一个字符串分割另一个字符串
fprintf — 将格式化后的字符串写入到流
get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的转换表
hebrev — 将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew)
hebrevc — 将逻辑顺序希伯来文(logical-Hebrew)转换为视觉顺序希伯来文(visual-Hebrew),并且转换换行符
hex2bin — Decodes a hexadecimally encoded binary string
html_entity_decode — Convert all HTML entities to their applicable characters
htmlentities — Convert all applicable characters to HTML entities
htmlspecialchars_decode — Convert special HTML entities back to characters
htmlspecialchars — Convert special characters to HTML entities
implode — Join array elements with a string
join — 别名 implode
lcfirst — Make a string’s first character lowercase
levenshtein — Calculate Levenshtein distance between two strings
localeconv — Get numeric formatting information
ltrim — Strip whitespace (or other characters) from the beginning of a string
md5_file — 计算指定文件的 MD5 散列值
md5 — 计算字符串的 MD5 散列值
metaphone — Calculate the metaphone key of a string
money_format — Formats a number as a currency string
nl_langinfo — Query language and locale information
nl2br — 在字符串所有新行之前插入 HTML 换行标记
number_format — Format a number with grouped thousands
ord — 返回字符的 ASCII 码值
parse_str — Parses the string into variables
print — 输出字符串
printf — 输出格式化字符串
quoted_printable_decode — Convert a quoted-printable string to an 8 bit string
quoted_printable_encode — Convert a 8 bit string to a quoted-printable string
quotemeta — Quote meta characters
rtrim — 删除字符串末端的空白字符(或者其他字符)
setlocale — Set locale information
sha1_file — 计算文件的 sha1 散列值
sha1 — 计算字符串的 sha1 散列值
similar_text — 计算两个字符串的相似度
soundex — Calculate the soundex key of a string
sprintf — Return a formatted string
sscanf — Parses input from a string according to a format
str_getcsv — 解析 CSV 字符串为一个数组
str_ireplace — str_replace 的忽略大小写版本
str_pad — 使用另一个字符串填充字符串为指定长度
str_repeat — 重复一个字符串
str_replace — 子字符串替换
str_rot13 — 对字符串执行 ROT13 转换
str_shuffle — 随机打乱一个字符串
str_split — 将字符串转换为数组
str_word_count — 返回字符串中单词的使用情况
strcasecmp — 二进制安全比较字符串(不区分大小写)
strchr — 别名 strstr
strcmp — 二进制安全字符串比较
strcoll — 基于区域设置的字符串比较
strcspn — 获取不匹配遮罩的起始子字符串的长度
strip_tags — 从字符串中去除 HTML 和 PHP 标记
stripcslashes — 反引用一个使用 addcslashes 转义的字符串
stripos — 查找字符串首次出现的位置(不区分大小写)
stripslashes — 反引用一个引用字符串
stristr — strstr 函数的忽略大小写版本
strlen — 获取字符串长度
strnatcasecmp — 使用“自然顺序”算法比较字符串(不区分大小写)
strnatcmp — 使用自然排序算法比较字符串
strncasecmp — 二进制安全比较字符串开头的若干个字符(不区分大小写)
strncmp — 二进制安全比较字符串开头的若干个字符
strpbrk — 在字符串中查找一组字符的任何一个字符
strpos — 查找字符串首次出现的位置
strrchr — 查找指定字符在字符串中的最后一次出现
strrev — 反转字符串
strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)
strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
strspn — 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。
strstr — 查找字符串的首次出现
strtok — 标记分割字符串
strtolower — 将字符串转化为小写
strtoupper — 将字符串转化为大写
strtr — 转换指定字符
substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度)
substr_count — 计算字串出现的次数
substr_replace — 替换字符串的子串
substr — 返回字符串的子串
trim — 去除字符串首尾处的空白字符(或者其他字符)
ucfirst — 将字符串的首字母转换为大写
ucwords — 将字符串中每个单词的首字母转换为大写
vfprintf — 将格式化字符串写入流
vprintf — 输出格式化字符串
vsprintf — 返回格式化字符串
wordwrap — 打断字符串为指定数量的字串

php安全模式下 限制的函数

php安全模式下 限制的函数

函数名

限制
dbmopen() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
dbase_open() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
filepro() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
filepro_rowcount() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
filepro_retrieve() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
ifx_* sql_safe_mode 限制, (!= safe mode)
ingres_* sql_safe_mode 限制, (!= safe mode)
mysql_* sql_safe_mode 限制, (!= safe mode)
pg_loimport() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
posix_mkfifo() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
putenv() 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。
move_uploaded_file() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
chdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
dl() 当 PHP 运行在 安全模式 时,不能使用此函数。
backtick operator 当 PHP 运行在 安全模式 时,不能使用此函数。
shell_exec()(在功能上和 backticks 函数相同) 当 PHP 运行在 安全模式 时,不能使用此函数。
exec() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
system() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
passthru() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
popen() 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因,目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
fopen() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
mkdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
rmdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
rename() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
unlink() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
copy() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (on source and target)
chgrp() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
chown() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。
chmod() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 另外,不能设置 SUID、SGID 和 sticky bits
touch() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。
symlink() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
link() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意:仅测试 target)
apache_request_headers() 在安全模式下,以“authorization”(区分大小写)开头的标头将不会被返回。
header() 在安全模式下,如果设置了 WWW-Authenticate,当前脚本的 uid 将被添加到该标头的 realm 部分。
PHP_AUTH 变量 在安全模式下,变量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但无论如何,您仍然可以使用 REMOTE_USER 来获取用户名称(USER)。(注意:仅 PHP 4.3.0 以后有效)
highlight_file(), show_source() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效)
parse_ini_file() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 (注意,仅在 4.2.1 版本后有效)
set_time_limit() 在安全模式下不起作用。
max_execution_time 在安全模式下不起作用。
mail() 在安全模式下,第五个参数被屏蔽。(注意,仅自 PHP 4.2.3 起受影响)
任何使用 php4/main/fopen_wrappers.c 的函数

php数组的常用函数

php数组的常用函数

在php中数组是种强大的数据类型.可以存储不同的数据类型在一个数组中,

下面我们列出了数组常用的操作,排序,键名对数组排序等做法。

/* 数组的常用函数
*
* 数组的排序函数
*   sort()
*   rsort()
*   usort()
*   asort()
*   arsort()
*   uasort()
*   ksort()
*   krsort()
*   uksort()
*   uatsort()
*   natcasesort()
*   array_multisort()
*
*    1.简单的数组排序
*      sort() rsort()
*    2.根据键名对数组排序
*      ksort() krsort()
*    3.根据元素的值对数组排序
*      asort() arsort()
*    4.根据”自然数排序“法对数组排序
*      natsort()//区分大小写字母比较 natcasescort()//不区分大小写字母的比较
*    5.根据用户自定义规则对数组排序
*      usort() uasort() uksort()对键排序
*    6.对维数组的排序
*      array_multisort()
*
* 拆分、合并、分解、接合的数组函数
*    1.array_slice()
*    2.array_splice()//删除
*    3.array_combine()//合并
*    4.array_merge();//合并
*    5.array_intersect();//多个数组的交集
*    6.array_diff();//返回多个数组的差集
*
* 数组与数据结构的函数
*   1.使用数组实现堆栈 //先进后出
*    array_push() array_pop()
*   2.使用数组实现队列 //先进先出
*    array_unshift() array_shift() unset()
*
*
* 其他与数组操作有关的函数
*    array_rand()
*    shuffle()
*    array_sum()
*    range()
*/

//简单数组排序的使用
$data=array(5,8,1,7,2);
sort($data);//元素由小到大进行排序
print_r($data);//Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 7 [4] => 8 )
rsort($data);//元素由大到小进行排序
print_r($data);//Array ( [0] => 8 [1] => 7 [2] => 5 [3] => 2 [4] => 1 )

//根据键名排序的例子
$data_2=array(5=>”five”,8=>”eight”,1=>”one”,7=>”seven”,2=>”two”);
ksort($data_2);//对数组的下标进行由小到大排序
print_r($data_2);//Array ( [1] => one [2] => two [5] => five [7] => seven [8] => eight )
krsort($data_2);//对数组的下标进行由大到小排序
print_r($data_2);//Array ( [8] => eight [7] => seven [5] => five [2] => two [1] => one )

 

//根据元素的值对数组排序
$data_3=array(“1″=>”Linux”,”a”=>”Apache”,”m”=>”MySQL”,”l”=>”PHP”);
//asort() arsort  与 sort() rsort()的区别在于 前者排序后保持原有的键名,后者不保持原有键名,且键名从0开始
asort($data_3);
print_r($data_3);//Array ( [a] => Apache [1] => Linux [m] => MySQL [l] => PHP )
echo ‘
‘;
arsort($data_3);
print_r($data_3);//Array ( [l] => PHP [m] => MySQL [1] => Linux [a] => Apache )
echo ‘
‘;
sort($data_3);
print_r($data_3);//Array ( [0] => Apache [1] => Linux [2] => MySQL [3] => PHP )
echo ‘
‘;
rsort($data_3);
print_r($data_3);//Array ( [0] => PHP [1] => MySQL [2] => Linux [3] => Apache )

//根据”自然数排序法“对数组排序(0-9短者优先)
$data_4=array(“file.txt”,”file11.txt”,”file2.txt”,”file22.txt”);
sort($data_4);
print_r($data_4);//Array ( [0] => file.txt [1] => file11.txt [2] => file2.txt [3] => file22.txt )
echo ‘
‘;
natsort($data_4);
print_r($data_4);//Array ( [0] => file.txt [2] => file2.txt [1] => file11.txt [3] => file22.txt )
echo ‘
‘;
natcasesort($data_4);
print_r($data_4);//Array ( [0] => file.txt [2] => file2.txt [1] => file11.txt [3] => file22.txt )
echo ‘
‘;

//用户自定义排序函数
echo ‘
‘;
$data_5=array(“Linux”,”Apache”,”MySQL”,”PHP”);
usort($data_5,”sortbylen”);//通过元素长度排序
print_r($data_5);//Array ( [0] => PHP [1] => MySQL [2] => Linux [3] => Apache )
function sortbylen($one,$two){
if(strlen($one)==strlen($two))
return 0;
else
return (strlen($one)>strlen($two))?1:-1;
}

//拆分、合并、分解、接合的数组函数
echo ‘
‘;
$data_6=array(“Linux”,”Apache”,”MySQL”,”PHP”);
print_r(array_slice($data_6,1,2));//取下标为1、2的元素
//Array ( [0] => Apache [1] => MySQL ) 下标重置从0开始
echo ‘
‘;

print_r(array_slice($data_6,-2,1));//从后边的第二个开始取返回一个,不是从0开始的
//Array ( [0] => MySQL ) 下标重置从0开始
echo ‘
‘;

print_r(array_slice($data_6,1,2,true));
//Array ( [1] => Apache [2] => MySQL )  保留原有的下标

echo ‘
‘;
//array_combine()
$a1=array(“OS”,”WebServer”,”DataBase”,”Language”);
$a2=array(“Linux”,”Apache”,”MySQL”,”PHP”);

print_r(array_combine($a1,$a2));//第一个参数作为键名,第二个作为值来合并
//Array ( [OS] => Linux [WebServer] => Apache [DataBase] => MySQL [Language] => PHP )

echo ‘
‘;

//array_merge()
$a3=array(“OS”,”WebServer”,”DataBase”,”Language”);
$a4=array(“Linux”,”Apache”,”MySQL”,”PHP”);
$a5=$a3+$a4;
print_r($a5);//因为两个数组下标重复所以显示这样
//Array ( [0] => OS [1] => WebServer [2] => DataBase [3] => Language )
echo ‘
‘;
print_r(array_merge($a3,$a4));//合并并重新索引
//Array ( [0] => OS [1] => WebServer [2] => DataBase [3] => Language [4] => Linux [5] => Apache [6] => MySQL [7] => PHP )

echo ‘
‘;

//array_intersect()
$a7=array(“OS”,”WebServer”,”DataBase”,”Language”,1,2,3);
$a8=array(“Linux”,”Apache”,”MySQL”,”PHP”,2,3,4);
print_r(array_intersect($a7,$a8));//Array ( [5] => 2 [6] => 3 )
echo ‘
‘;

//array_diff()
$a9=array(1,2,3,4);
$a10=array(3,4,5,6);
print_r(array_diff($a9,$a10));//Array ( [0] => 1 [1] => 2 )
//返回第一个数组跟第二个相差的元素
echo ‘
‘;
//使用数组实现堆栈
$b=array(1,2,3,4);
$b[]=”a”;//入栈
array_push($b,”b”,”c”);//使用函数入栈
print_r($b);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => a [5] => b [6] => c )
echo ‘
‘;

$value=array_pop($b);//使用函数出栈
print_r($b);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => a [5] => b )
echo ‘
‘;
echo $value;//显示出栈的元素的值 c
echo ‘
‘;

//使用数组实现队列
$c=array(1,2,3);
print_r($c);//Array ( [0] => 1 [1] => 2 [2] => 3 )
echo ‘
‘;
array_unshift($c,”abc”,”bcd”);//入队
print_r($c);//Array ( [0] => abc [1] => bcd [2] => 1 [3] => 2 [4] => 3 )
echo ‘
‘;
$values=array_shift($c);//出队
print_r($c);// Array ( [0] => bcd [1] => 1 [2] => 2 [3] => 3 )
echo ‘
‘;
unset($c[2]);//删除指定位置元素
print_r($c);//Array ( [0] => bcd [1] => 1 [3] => 3 )
echo ‘
‘;
//array_rand()  随机返回数组下标
$arr=array(1,3,4,5,76,7,99,6,2,3);
echo array_rand($arr);//返回的是随机的数组元素的下标
echo $arr[array_rand($arr)];//随机显示数组元素的值
echo ‘
‘;
//shuffle()  随机重新排列数组
$arr2=array(32,35,33);
shuffle($arr2);
print_r($arr2);//数组元素位置随机变换
echo ‘
‘;
//array_sum()  求和
$arr3=array(1,3,5);
echo array_sum($arr3); //返回9
echo ‘
‘;
print_r($arr3);//Array ( [0] => 1 [1] => 3 [2] => 5 )
echo ‘
‘;
//range(最小值,最大值,步长)
$arr4=range(0,100,10);
print_r($arr4);//Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 [6] => 60 [7] => 70 [8] => 80 [9] => 90 [10] => 100 )

?>