数组被作为排序函数的参数,排序以后,数组本身就发生了改变,函数的返回值为bool类型。
2 函数名中出现单a表示association,含义为,在按值排序的过程中,保持key=>value的对应关系不变
3 函数名中出现单k表示key,含义为,在按值排序的过程中按照数组key而不是数组的值排序
4 函数名中出现单r的表示reverse,含义为,按照跟不加r的相反的顺序排列
5 函数名中出现单u的表示user-defined,含义为,使用用户自定义函数排序,如果函数的逻辑是参数1<参数2返回负数,则按照升序排列(p1小2返负升)。
--------------------sort函数升序排序--------------------------------
代码如下 | 复制代码 |
bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) <?php $fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); var_dump($fruits); ?> 结果: array 0 => string 'apple' (length=5) 1 => string 'banana' (length=6) 2 => string 'lemon' (length=5) 3 => string 'orange' (length=6) |
--------------------rsort降序排列--------------------
代码如下 | 复制代码 |
<?php $fruits = array("lemon", "orange", "banana", "apple"); rsort($fruits); var_dump($fruits); ?> 结果: array 0 => string 'orange' (length=6) 1 => string 'lemon' (length=5) 2 => string 'banana' (length=6) 3 => string 'apple' (length=5) |
---------------asort按照二维数组值的升序排列(保持key=>value的关联关系)-----------
代码如下 | 复制代码 |
<?php $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); asort($fruits); var_dump($fruits); ?> 结果: array 'c' => string 'apple' (length=5) 'b' => string 'banana' (length=6) 'd' => string 'lemon' (length=5) 'a' => string 'orange' (length=6) |
--------------arsort按照二维数组值的降序排列(保持key=>value的关联关系)--------------
代码如下 | 复制代码 |
<?php --------------------ksort按照数组的key升序排列-------------- <?php$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); |
---------------------krsort按照数组key的降序排列--------------------------------
代码如下 | 复制代码 |
<?php array |
----------------usort函数按照用户自定义的函数排序----------------
代码如下 | 复制代码 |
<?php $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); var_dump($a); |
-----------------uksort使用自定义函数按照数组的key排序-----------------
代码如下 | 复制代码 |
<?php $a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4); uksort($a, "cmp"); var_dump($a); |
-------------------uasort将数组用自定义函数按照value排序,保持索引关系不变---------
代码如下 | 复制代码 |
<?php // Array to be sorted // Sort and print the resulting array |
-------------------array_multisort排序多个数组或多维数组---------
代码如下 | 复制代码 |
<?php array_multisort($ar[0], SORT_ASC, SORT_STRING, |
1 => int 3
2 => string '2' (length=1)
3 => int 2
4 => int 1
//说明:
1 上例中:$ar数组优先按照$ar[0]的字符串值升序排列,如果字符串值相等,再按照$ar[1]数组的数字值降序排列。
2 array_multisort函数的任意一个位置的参数如果是数组,表示排序时用的值,
如果有多个数组参数,优先按照前边的数组值进行排序,如果是常量,例如
SORT_ASC, SORT_DESC, SORT_REGULAR,SORT_NUMERIC, SORT_STRING.
表示排序方法(数组取值前优先)。
一个完整的php获取汉字拼音字母的实现程序,有需要的朋友可参考一下。
代码如下 | 复制代码 |
<?php class GetPingYing { private $pylist = array( 'a'=>-20319, 'ai'=>-20317, 'an'=>-20304, 'ang'=>-20295, 'ao'=>-20292, 'ba'=>-20283, 'bai'=>-20265, 'ban'=>-20257, 'bang'=>-20242, 'bao'=>-20230, 'bei'=>-20051, 'ben'=>-20036, 'beng'=>-20032, 'bi'=>-20026, 'bian'=>-20002, 'biao'=>-19990, 'bie'=>-19986, 'bin'=>-19982, 'bing'=>-19976, 'bo'=>-19805, 'bu'=>-19784, 'ca'=>-19775, 'cai'=>-19774, 'can'=>-19763, 'cang'=>-19756, 'cao'=>-19751, 'ce'=>-19746, 'ceng'=>-19741, 'cha'=>-19739, 'chai'=>-19728, 'chan'=>-19725, 'chang'=>-19715, 'chao'=>-19540, 'che'=>-19531, 'chen'=>-19525, 'cheng'=>-19515, 'chi'=>-19500, 'chong'=>-19484, 'chou'=>-19479, 'chu'=>-19467, 'chuai'=>-19289, 'chuan'=>-19288, 'chuang'=>-19281, 'chui'=>-19275, 'chun'=>-19270, 'chuo'=>-19263, 'ci'=>-19261, 'cong'=>-19249, 'cou'=>-19243, 'cu'=>-19242, 'cuan'=>-19238, 'cui'=>-19235, 'cun'=>-19227, 'cuo'=>-19224, 'da'=>-19218, 'dai'=>-19212, 'dan'=>-19038, 'dang'=>-19023, 'dao'=>-19018, 'de'=>-19006, 'deng'=>-19003, 'di'=>-18996, 'dian'=>-18977, 'diao'=>-18961, 'die'=>-18952, 'ding'=>-18783, 'diu'=>-18774, 'dong'=>-18773, 'dou'=>-18763, 'du'=>-18756, 'duan'=>-18741, 'dui'=>-18735, 'dun'=>-18731, 'duo'=>-18722, 'e'=>-18710, 'en'=>-18697, 'er'=>-18696, 'fa'=>-18526, 'fan'=>-18518, 'fang'=>-18501, 'fei'=>-18490, 'fen'=>-18478, 'feng'=>-18463, 'fo'=>-18448, 'fou'=>-18447, 'fu'=>-18446, 'ga'=>-18239, 'gai'=>-18237, 'gan'=>-18231, 'gang'=>-18220, 'gao'=>-18211, 'ge'=>-18201, 'gei'=>-18184, 'gen'=>-18183, 'geng'=>-18181, 'gong'=>-18012, 'gou'=>-17997, 'gu'=>-17988, 'gua'=>-17970, 'guai'=>-17964, 'guan'=>-17961, 'guang'=>-17950, 'gui'=>-17947, 'gun'=>-17931, 'guo'=>-17928, 'ha'=>-17922, 'hai'=>-17759, 'han'=>-17752, 'hang'=>-17733, 'hao'=>-17730, 'he'=>-17721, 'hei'=>-17703, 'hen'=>-17701, 'heng'=>-17697, 'hong'=>-17692, 'hou'=>-17683, 'hu'=>-17676, 'hua'=>-17496, 'huai'=>-17487, 'huan'=>-17482, 'huang'=>-17468, 'hui'=>-17454, 'hun'=>-17433, 'huo'=>-17427, 'ji'=>-17417, 'jia'=>-17202, 'jian'=>-17185, 'jiang'=>-16983, 'jiao'=>-16970, 'jie'=>-16942, 'jin'=>-16915, 'jing'=>-16733, 'jiong'=>-16708, 'jiu'=>-16706, 'ju'=>-16689, 'juan'=>-16664, 'jue'=>-16657, 'jun'=>-16647, 'ka'=>-16474, 'kai'=>-16470, 'kan'=>-16465, 'kang'=>-16459, 'kao'=>-16452, 'ke'=>-16448, 'ken'=>-16433, 'keng'=>-16429, 'kong'=>-16427, 'kou'=>-16423, 'ku'=>-16419, 'kua'=>-16412, 'kuai'=>-16407, 'kuan'=>-16403, 'kuang'=>-16401, 'kui'=>-16393, 'kun'=>-16220, 'kuo'=>-16216, 'la'=>-16212, 'lai'=>-16205, 'lan'=>-16202, 'lang'=>-16187, 'lao'=>-16180, 'le'=>-16171, 'lei'=>-16169, 'leng'=>-16158, 'li'=>-16155, 'lia'=>-15959, 'lian'=>-15958, 'liang'=>-15944, 'liao'=>-15933, 'lie'=>-15920, 'lin'=>-15915, 'ling'=>-15903, 'liu'=>-15889, 'long'=>-15878, 'lou'=>-15707, 'lu'=>-15701, 'lv'=>-15681, 'luan'=>-15667, 'lue'=>-15661, 'lun'=>-15659, 'luo'=>-15652, 'ma'=>-15640, 'mai'=>-15631, 'man'=>-15625, 'mang'=>-15454, 'mao'=>-15448, 'me'=>-15436, 'mei'=>-15435, 'men'=>-15419, 'meng'=>-15416, 'mi'=>-15408, 'mian'=>-15394, 'miao'=>-15385, 'mie'=>-15377, 'min'=>-15375, 'ming'=>-15369, 'miu'=>-15363, 'mo'=>-15362, 'mou'=>-15183, 'mu'=>-15180, 'na'=>-15165, 'nai'=>-15158, 'nan'=>-15153, 'nang'=>-15150, 'nao'=>-15149, 'ne'=>-15144, 'nei'=>-15143, 'nen'=>-15141, 'neng'=>-15140, 'ni'=>-15139, 'nian'=>-15128, 'niang'=>-15121, 'niao'=>-15119, 'nie'=>-15117, 'nin'=>-15110, 'ning'=>-15109, 'niu'=>-14941, 'nong'=>-14937, 'nu'=>-14933, 'nv'=>-14930, 'nuan'=>-14929, 'nue'=>-14928, 'nuo'=>-14926, 'o'=>-14922, 'ou'=>-14921, 'pa'=>-14914, 'pai'=>-14908, 'pan'=>-14902, 'pang'=>-14894, 'pao'=>-14889, 'pei'=>-14882, 'pen'=>-14873, 'peng'=>-14871, 'pi'=>-14857, 'pian'=>-14678, 'piao'=>-14674, 'pie'=>-14670, 'pin'=>-14668, 'ping'=>-14663, 'po'=>-14654, 'pu'=>-14645, 'qi'=>-14630, 'qia'=>-14594, 'qian'=>-14429, 'qiang'=>-14407, 'qiao'=>-14399, 'qie'=>-14384, 'qin'=>-14379, 'qing'=>-14368, 'qiong'=>-14355, 'qiu'=>-14353, 'qu'=>-14345, 'quan'=>-14170, 'que'=>-14159, 'qun'=>-14151, 'ran'=>-14149, 'rang'=>-14145, 'rao'=>-14140, 're'=>-14137, 'ren'=>-14135, 'reng'=>-14125, 'ri'=>-14123, 'rong'=>-14122, 'rou'=>-14112, 'ru'=>-14109, 'ruan'=>-14099, 'rui'=>-14097, 'run'=>-14094, 'ruo'=>-14092, 'sa'=>-14090, 'sai'=>-14087, 'san'=>-14083, 'sang'=>-13917, 'sao'=>-13914, 'se'=>-13910, 'sen'=>-13907, 'seng'=>-13906, 'sha'=>-13905, 'shai'=>-13896, 'shan'=>-13894, 'shang'=>-13878, 'shao'=>-13870, 'she'=>-13859, 'shen'=>-13847, 'sheng'=>-13831, 'shi'=>-13658, 'shou'=>-13611, 'shu'=>-13601, 'shua'=>-13406, 'shuai'=>-13404, 'shuan'=>-13400, 'shuang'=>-13398, 'shui'=>-13395, 'shun'=>-13391, 'shuo'=>-13387, 'si'=>-13383, 'song'=>-13367, 'sou'=>-13359, 'su'=>-13356, 'suan'=>-13343, 'sui'=>-13340, 'sun'=>-13329, 'suo'=>-13326, 'ta'=>-13318, 'tai'=>-13147, 'tan'=>-13138, 'tang'=>-13120, 'tao'=>-13107, 'te'=>-13096, 'teng'=>-13095, 'ti'=>-13091, 'tian'=>-13076, 'tiao'=>-13068, 'tie'=>-13063, 'ting'=>-13060, 'tong'=>-12888, 'tou'=>-12875, 'tu'=>-12871, 'tuan'=>-12860, 'tui'=>-12858, 'tun'=>-12852, 'tuo'=>-12849, 'wa'=>-12838, 'wai'=>-12831, 'wan'=>-12829, 'wang'=>-12812, 'wei'=>-12802, 'wen'=>-12607, 'weng'=>-12597, 'wo'=>-12594, 'wu'=>-12585, 'xi'=>-12556, 'xia'=>-12359, 'xian'=>-12346, 'xiang'=>-12320, 'xiao'=>-12300, 'xie'=>-12120, 'xin'=>-12099, 'xing'=>-12089, 'xiong'=>-12074, 'xiu'=>-12067, 'xu'=>-12058, 'xuan'=>-12039, 'xue'=>-11867, 'xun'=>-11861, 'ya'=>-11847, 'yan'=>-11831, 'yang'=>-11798, 'yao'=>-11781, 'ye'=>-11604, 'yi'=>-11589, 'yin'=>-11536, 'ying'=>-11358, 'yo'=>-11340, 'yong'=>-11339, 'you'=>-11324, 'yu'=>-11303, 'yuan'=>-11097, 'yue'=>-11077, 'yun'=>-11067, 'za'=>-11055, 'zai'=>-11052, 'zan'=>-11045, 'zang'=>-11041, 'zao'=>-11038, 'ze'=>-11024, 'zei'=>-11020, 'zen'=>-11019, 'zeng'=>-11018, 'zha'=>-11014, 'zhai'=>-10838, 'zhan'=>-10832, 'zhang'=>-10815, 'zhao'=>-10800, 'zhe'=>-10790, 'zhen'=>-10780, 'zheng'=>-10764, 'zhi'=>-10587, 'zhong'=>-10544, 'zhou'=>-10533, 'zhu'=>-10519, 'zhua'=>-10331, 'zhuai'=>-10329, 'zhuan'=>-10328, 'zhuang'=>-10322, 'zhui'=>-10315, 'zhun'=>-10309, 'zhuo'=>-10307, 'zi'=>-10296, 'zong'=>-10281, 'zou'=>-10274, 'zu'=>-10270, 'zuan'=>-10262, 'zui'=>-10260, 'zun'=>-10256, 'zuo'=>-10254 ); //全部拼音 public function getAllPY($chinese, $delimiter = '', $length = 0) { $py = $this->zh_to_pys($chinese, $delimiter); if($length) { $py = substr($py, 0, $length); } return $py; } //拼音首个字母 public function getFirstPY($chinese){ $result = '' ; for ($i=0; $i<strlen($chinese); $i++) { $p = ord(substr($chinese,$i,1)); if ($p>160) { $q = ord(substr($chinese,++$i,1)); $p = $p*256 + $q - 65536; } $result .= substr($this->zh_to_py($p),0,1); } return $result ; } //-------------------中文转拼音--------------------------------// private function zh_to_py($num, $blank = '') { if($num>0 && $num<160 ) { return chr($num); } elseif ($num<-20319||$num>-10247) { return $blank; } else { foreach ($this->pylist as $py => $code) { if($code > $num) break; $result = $py; } return $result; } } private function zh_to_pys($chinese, $delimiter = ' ', $first=0){ $result = array(); for($i=0; $i<strlen($chinese); $i++) { $p = ord(substr($chinese,$i,1)); if($p>160) { $q = ord(substr($chinese,++$i,1)); $p = $p*256 + $q - 65536; } $result[] = $this->zh_to_py($p); if ($first) { return $result[0]; } } return implode($delimiter, $result); } } //-------------------------中文转拼音结束--------------------------------// //中文是双字节,所以需要两个字节连接起来(ASCII码的范围是在161-255) $c = '齐秦'; for($i=0; $i<strlen($c); $i++) { echo ord($c[$i]).' ';//198 235 199 216 } echo '<br>',chr(198).chr(235).chr(199).chr(216),'<br>'; //测试 $PingYing = new GetPingYing(); echo '<br>',$PingYing->getFirstPY('羽泉乐队,歌不错-推荐'),'<br>';//yqldgbc-tj echo $PingYing->getAllPY('羽泉乐队,歌不错-推荐'),'<br>'; //yuquanleduigebucuo-tuijian ?> |
ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
ob_get_contents():用来获取页面缓存中的内容,获取到以后呢,我们就可以想怎么处理这些内容都行了,过滤字段啦,匹配内容啦,都可以~~~ :)
ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。
用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。
下面是编码部分。
1.初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定义。这里用到的识别ID是经加密的$_SERVER[REQUEST_URI]参数。这个函数中最后还有一个if判断:若未过缓存期,则加载缓存文件,否则加载源文件。
代码如下 | 复制代码 |
function page_init() |
2.页面缓存函数,这里使用到一个技巧:在缓存文件的内容中加上一个头部信息--过期时间,所以每次只需要对头部中的过期时间和当前时间进行比较(在page_init()函数中进行)就能判断缓存是否过期了。
代码如下 | 复制代码 |
|
3.函数使用,注意这两个函数有先后执行顺序,还有别忘了ob_start()
代码如下 | 复制代码 |
|
例2
下面做个示例来说明PHP页面缓存技术:
代码如下 | 复制代码 |
<?php function cache_start($_time, $dir) function cache_end($dir) cache_start($_time, $dir); |
例
利用生成文件做缓存
代码如下 | 复制代码 |
<?php class Esj_Cache{ public function __construct($cache_foldername,$cacher_time=100) public function read_cache() }catch(Exception $e){ //测试缓存文件夹是否存在 //建立一个新的文件夹 //读取缓存文件 } } //返回文件的名字 //建立缓存文件 // 取得缓存中的所有文件 //删除缓存中的所有文件 } ?> |
代码如下 | 复制代码 |
<?PHP private function addKey($tabName, $key){
|
例如:
代码如下 | 复制代码 |
<?php |
这里变量 $a 将会在包含文件 b.inc 中生效。但是,在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如:
代码如下 | 复制代码 |
<?php function Test() Test(); |
这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a,而且在这个范围内,它并没有被赋值。你可能注意到 PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖。这可能引起一些问题,有些人可能不小心就改变了一个全局变量。PHP 中全局变量在函数中使用时必须申明为global。
global 关键字
首先,一个使用 global 的例子:
Example #1 使用 global
代码如下 | 复制代码 |
<?php function Sum() $b = $a + $b; Sum(); |
以上脚本的输出将是“3”。在函数中申明了全局变量 $a 和 $b,任何变量的所有引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大个数,PHP 没有限制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:
Example #2 使用 $GLOBALS 替代 global
代码如下 | 复制代码 |
<?php function Sum() Sum(); |