php中Array数组函数用法详解(1/2)
简介:本次介绍的是PHP手册中用来对数组进行各种操作的系统函数,可以说数组在PHP中有重要的作用,因此函数也是灰常多,下面天涯把最常用的进行详细说明。
array_change_key_case — 返回字符串键名全为小写或大写的数组
array array_change_key_case ( array $input [, int $case ] )
$case 可为 CASE_UPPER 或 CASE_LOWER(默认)
代码如下 | 复制代码 |
<?php $phpha = array('Home'=>'http://www.111cn.net', 'Blog'=>'http://www.111cn.net'); $phpha_upper = array_change_key_case($phpha, CASE_UPPER); $phpha_lower = array_change_key_case($phpha, CASE_LOWER); //默认情况 print_r($phpha_upper); print_r($phpha_lower); ?> //结果: Array ( [HOME] => http://www.111cn.net [BLOG] => http://www.111cn.net ) Array ( [home] => http://www.111cn.net [blog] => http://www.111cn.net ) |
array_chunk — 将一个数组分割成多个
array array_chunk ( array $input , int $size [, bool $preserve_keys ] )
array_chunk() 将一个数组分割成多个数组,其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少几个。得到的数组是一个多维数组中的单元,其索引从零开始。
将可选参数 preserve_keys 设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE,那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。
代码如下 | 复制代码 |
<?php $input_array = array('a', 'b', 'c', 'd', 'e'); print_r(array_chunk($input_array, 2)); print_r(array_chunk($input_array, 2, TRUE)); ?> //结果: Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [0] => c [1] => d ) [2] => Array ( [0] => e ) ) Array ( [0] => Array ( [0] => a [1] => b ) [1] => Array ( [2] => c [3] => d ) [2] => Array ( [4] => e ) ) |
array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
array array_combine ( array $keys , array $values )
返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。
如果两个数组的单元数不同或者数组为空时返回 FALSE。
代码如下 | 复制代码 |
<?php $key = array('Home', 'Blog'); $key2 = array('Home', 'Blog', 'BBS'); $phpha = array('http://www.111cn.net', 'http://www.111cn.net'); $phpha_combine = array_combine($key, $phpha); $phpha_combine_wrong = array_combine($key2, $phpha); print_r($phpha_combine); print_r($phpha_combine_wrong); ?> //结果: Array ( [Home] => http://www.111cn.net [Blog] => http://www.111cn.net ) |
// 可以看到第二次array_combine()报错了,指出了2个数组的成员数量不相等
Warning: Both parameters should have an equal number of elements in F:Program FilesPHPNOWhtdocsindex.php on line 31
array_count_values — 统计数组中所有的值出现的次数
array array_count_values ( array $input )
array_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在 input 数组中出现的次数作为值。
代码如下 | 复制代码 |
<?php $phpha = array('hello', 'world', 'tianya', 'hello', 'world'); $phpha_result = array_count_values($phpha); print_r($phpha_result); ?> //结果: Array ( [hello] => 2 [world] => 2 [tianya] => 1 ) |
array_diff — 计算数组的差集
array_diff_key — 使用键名比较计算数组的差集
array_diff_ukey — 用回调函数对键名比较计算数组的差集
array_diff_assoc — 带索引检查计算数组的差集
array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
代码如下 | 复制代码 |
//array_diff() 返回一个数组,该数组包括了所有在array1中 //但是不在任何其它参数数组中的值。注意键名保留不变。 <?php $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); ?> //结果: Array ( [1] => blue ) //本函数和array_diff()相同只除了比较是根据键名而不是值来进行的。 <?php $array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4); $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8); print_r(array_diff_key($array1, $array2)); ?> //结果: Array ( [red] => 2 [purple] => 4 ) //注意和 array_diff() 不同的是键名也用于比较。 <?php $array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array ("a" => "green", "yellow", "red"); print_r(array_diff_assoc($array1, $array2)); ?> //结果: Array ( [b] => brown [c] => blue [0] => red ) |
array_fill — 用给定的值填充数组
array_fill_keys — Fill an array with values, specifying keys
array_filter — 用回调函数过滤数组中的单元
代码如下 | 复制代码 |
<?php |
array_flip — 交换数组中的键和值
代码如下 | 复制代码 |
//如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了。 <?php $trans = array("a" => 1, "b" => 1, "c" => 2); $trans = array_flip($trans); print_r($trans); ?> //结果: Array ( [1] => b [2] => c ) |
array_intersect — 计算数组的交集
array_intersect_assoc — 带索引检查计算数组的交集
array_intersect_uassoc — 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_key — 使用键名比较计算数组的交集
array_intersect_ukey — 用回调函数比较键名来计算数组的交集
代码如下 | 复制代码 |
<?php $array1 = array("a" => "green", "red", "blue"); $array2 = array("b" => "green", "yellow", "red"); $result = array_intersect($array1, $array2); print_r($result); ?> //结果: Array ( [a] => green [0] => red ) //注意array_intersect_assoc()和array_intersect()不同的是键名也用于比较。 <?php $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); $result = array_intersect_assoc($array1, $array2); print_r($result); ?> //结果: Array ( [a] => green ) |
本文章来给各位同学介绍php控制页面浏览器缓存与启用gzip传送页面方法,希望此代码对各位同这会有所帮助,同时没有服务器权限的朋友可这样来实现服务器gzip页面传输。
php实例gzip传输页面
代码如下 | 复制代码 |
可以用于静态资源与html页面,修改一下也适合于其他语言 //缓存过期时间(Cache-Control, http1.1协义), 推荐使用 // 缓存过期时间为24小时(Expires) //Last-Modified, 最后修改的时间 //启用gzip压缩 |
如果你有服务器权限可参考apache开启gzip传输
一,找到你的httpd.conf文件,打开找到如下
LoadModule deflate_module modules/mod_deflate.so
把前面的#去了,因为mod_deflate.so模块默认是关闭的,好了下面一下
二,把现面代码放到你httpd.conf文件最后面就好了。
代码如下 | 复制代码 |
<IfModule mod_deflate.c> |
重启你的apache就KO了
iis开启gzip页面传输
1. 打开Internet信息服务(IIS)管理器,右击“网站”-》“属性”,选择“服务”。在“HTTP压缩”框中选中“压缩应用程序文件”和“压缩静态文件”,按需要设置“临时目录”和“临时目录的最大限制”;
2. 在Internet信息服务(IIS)管理器,右击“Web服务扩展”-》“增加一个新的Web服务扩展。。.”,在“新建Web服务扩展”框中输入扩展名“HTTP Compression”,添加“要求的文件”为C:WINDOWSsystem32inetsrvgzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”;
3. 使用文本编辑器打开C:WindowsSystem32inetsrvMetaBase.xml(建议先备份),
找到Location =“/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location =”/LM/W3SVC/Filters/Compression/deflate“用于设置deflate压缩。 上面两个节点紧挨着。并且设置的属性相同。
如果需要压缩动态文件,则将HcDoDynamicCompression设置为”TRUE“,
并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;
如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为”TRUE“,
并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;
HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0。
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property
说明: 这两个属性值一般推荐设置为9, 具有最佳性价比。
注意
1. 在编辑MetaBase.xml前需要停止IIS,可以使用 net stop iisadmin
2. 修改完成后开启iisadmin服务,并执行iisreset命令
关于SEO的测试
压缩是否对SEO有影响,经测试,开启后仍然可以被很好的收录。
关于对SEO影响的研究文章,还可以参考下面的几篇文章。
具体的效率问题,将继续监控以作研究
在php中session是一个服务器全局变量可以实现页面之间传递了,所以session常用于服务器端用户会员登录验证,session的安全性也是非常高的,下面我来介绍一下关于php session基础知识。大家对session有什么看法?不知道大家有没有研究过,今天达内php培训老师想要为大家分享一些有关这方面的内容,希望大家能够喜欢。
session 的生命周期是多长
1 浏览器结束时其生命周期也同时结束,但是档案仍然存在于 /tmp/(sess_???)
2 下次重新开浏览器时会重新分配 sessionID,如果你使用 session_id() 把以前的 ID 带回来,则会去读取残存在 /tmp 处的 sess_???, 取回你之前所有已经设定的参数
3 可以在 PHP.ini 里修改 session 档案残存的时间
session.gc_maxlifetime = 1440 ; after this number of seconds, stored
data will be seen as 'garbage' and
cleaned up by the gc process
默认是 1440 秒,24分钟
使用 session 注意的存储路径问题
看看 php.ini 里对于 session 的设置
[Session]
session.save_handler = files ; handler used to store/retrieve data
session.save_path = /tmp ; argument passed to save_handler
in the case of files, this is the
path where data files are stored
默认是存于 /tmp 目录下,这个目录可不一定真有啊!!! 最好改为你的 php 安装路径,比如 c:/php
彻底理解PHP的SESSION机制 1.session.save_handler = files
* 1. session_start()
1. session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,
PHP自身的垃圾回收是无效的,SESSION的回收是要删文件的,这个概率是根据php.ini的配置决定的,
但是有的系统是 session.gc_probability = 0,这也就是说概率是0,而是通过cron脚本来实现垃圾回收。
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440//过期时间 默认24分钟
//概率是 session.gc_probability/session.gc_divisor 结果 1/1000,
//不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。
session.save_path = //好像不同的系统默认不一样,有一种设置是 "N;/path"
//这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本
2. session会判断当前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE键值,
这个值可以从php.ini找到
session.name = PHPSESSID //默认值PHPSESSID
3. 如果不存在会生成一个session_id,然后把生成的session_id作为COOKIE的值传递到客户端.
相当于执行了下面COOKIE 操作,注意的是,这一步执行了setcookie()操作,COOKIE是在header头中发送的,
这之前是不能有输出的,PHP有另外一个函数 session_regenerate_id() 如果使用这个函数,这之前也是不能有输出的。
setcookie(session_name(),
session_id(),
session.cookie_lifetime,//默认0
session.cookie_path,//默认'/'当前程序跟目录下都有效
session.cookie_domain,//默认为空
)
4. 如果存在那么session_id = $_COOKIE[session_name];
然后去session.save_path指定的文件夹里去找名字为'SESS_' . session_id()的文件.
读取文件的内容反序列化,然后放到$_SESSION中
* 2. 为$_SESSION赋值
比如新添加一个值$_SESSION['test'] = 'blah'; 那么这个$_SESSION只会维护在内存中,当脚本执行结束的时候,
用把$_SESSION的值写入到session_id指定的文件夹中,然后关闭相关资源. 这个阶段有可能执行更改session_id的操作,
比如销毁一个旧的的session_id,生成一个全新的session_id.一半用在自定义 session操作,角色的转换上,
比如Drupal.Drupal的匿名用户有一个SESSION的,当它登录后需要换用新的session_id
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');//旧session cookie过期
}
session_regenerate_id();//这一步会生成新的session_id
//session_id()返回的是新的值
3.写入SESSION操作
在脚本结束的时候会执行SESSION写入操作,把$_SESSION中值写入到session_id命名的文件中,可能已经存在,
可能需要创建新的文件。
* 4. 销毁SESSION
SESSION发出去的COOKIE一般属于即时COOKIE,保存在内存中,当浏览器关闭后,才会过期,假如需要人为强制过期,
比如 退出登录,而不是关闭浏览器,那么就需要在代码里销毁SESSION,方法有很多,
o 1. setcookie(session_name(), session_id(), time() - 8000000, ..);//退出登录前执行
o 2. usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。
o 3. session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id
当不关闭浏览器的情况下,再次刷新,2和3都会有COOKIE传过来,但是找不到数据
2.session.save_handler = user
用户自定义session处理机制,更加直观
* session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
1.session_start(),
执行open($save_path, $session_name)打开session操作句柄
$save_path 在session.save_handler = files的情况下它就是session.save_path,
但是如果用户自定的话,这个两个参数都用不上,直接返回TRUE
执行read($id)从中读取数据.//这个参数是自动传递的就是session_id(),可以通过这个值进行操作。
* 2.脚本执行结束
执行write($id, $sess_data) //两个参数,很简单
* 3.假如用户需要session_destroy()
先执行destroy.在执行第2步
一个实际例子:
代码如下 | 复制代码 |
//SESSION初始化的时候调用 //关闭的时候调用 function read($id) $sess_file = "$sess_save_path/sess_$id"; } function destroy($id) $sess_file = "$sess_save_path/sess_$id"; function gc($maxlifetime) foreach (glob("$sess_save_path/sess_*") as $filename) { |
例
PHP Session在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 <html> 标签之前:
代码如下 | 复制代码 |
<? php session_start(); ?> <html> </body> |
上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存储 Session 变量
存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
代码如下 | 复制代码 |
<?php <html> <?php </body> |
输出:
Pageviews=1
今天小编来给各位同学介绍利用preg_replace函数把手机号码中间指定几伴替换成星号了,这个在很多网站 都会有这样做,下面我来介绍实例方法。
正则表达式方法
1、字符串中包含多个手机号码
代码如下 | 复制代码 |
<?php |
2、字符串中只有一个手机号码
代码如下 | 复制代码 |
<?php |
不用正则表达式实现
1、使用substr_replace字符串部分替换函数
代码如下 | 复制代码 |
<?php |
2、使用字符串截取函数substr
代码如下 | 复制代码 |
<?php |
substr_replace() 函数把字符串的一部分替换为另一个字符串。
用法
substr_replace(string,replacement,start,length)
注意当字符串包含中文时,不经过特殊处理会出现乱码。
代码如下 | 复制代码 |
<?php |
例2
代码如下 | 复制代码 |
<?php $var = 'ABCDEFGH:/MNRPQR/'; echo "Original: $var<hr />n"; /* These two examples replace all of $var with 'bob'. */ echo substr_replace($var, 'bob', 0) . "<br />n"; echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />n"; /* Insert 'bob' right at the beginning of $var. */ echo substr_replace($var, 'bob', 0, 0) . "<br />n"; /* These next two replace 'MNRPQR' in $var with 'bob'. */ echo substr_replace($var, 'bob', 10, -1) . "<br />n"; echo substr_replace($var, 'bob', -7, -1) . "<br />n"; /* Delete 'MNRPQR' from $var. */ echo substr_replace($var, '', 10, -1) . "<br />n"; ?> |
Original: ABCDEFGH:/MNRPQR/
bob
bob
bobABCDEFGH:/MNRPQR/
ABCDEFGH:/bob/
ABCDEFGH:/bob/
ABCDEFGH://
将过长的字符串用省略号代替一部分
下面的程序可以将过长的字符串保留首尾,中间用省略号代替。
代码如下 | 复制代码 |
<?php $longString = 'abcdefghijklmnopqrstuvwxyz0123456789z.jpg'; $separator = '...'; $separatorlength = strlen($separator) ; // 需要保留的字符串 $maxlength = 25 - $separatorlength; // 从一半的长度开始 $start = $maxlength / 2 ; // 计算偏移量 $trunc = strlen($longString) - $maxlength; echo substr_replace($longString, $separator, $start, $trunc); //prints "abcdefghij...56789z.jpg" ?> |
程序运行结果:
abcdefghijk...456789z.jpg
Program List:将多出的字符用省略号代替
代码如下 | 复制代码 |
|
好了你大概会知道此函数的作用了。
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- 下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25