如下所示:复制代码 代码如下:<?phpfunction unicode_encode($str, $encoding='GBK', $prefix='', $postfix=';'){ $str = iconv($encoding, 'UCS-2', $str); $arrstr = str_split($str, 2); $unistr = ''; for($i=0, $len=count($arrstr); $i<$len; $i++) {  $dec = hexdec(bin2hex($arrstr[$i]));  $unistr .= $prefix.$dec.$postfix; } return $unistr;}$str = '<b>哈哈</b>';$unistr = unicode_encode($str);echo $unistr.'<br />'; ?

本文实例分析了PHP数组游标实现对数组的各种操作。分享给大家供大家参考,具体如下:如何不用foreach实现对数组实现循环?答:我们只需要模拟foreach就行了,数组在执行foreach循环的时候,是有一个游标指向当前数组循环到的值,那如果我们能拿到这个游标,并且操作游标,使游标前进或者后退,那么我们就能不用foreach而实现循环数组直接上代码,清晰直观:<?php $arr = array('你','若','安','好','便','是','晴','天');//current()函数是取得游标所在数组位置的值//next()是使游标向数组的尾部移动一格for(;$v=current($arr);next($arr)){ echo $v,'<br />';}/*返回你若安好便是晴天*///那么又如何使游标2步2步一走呢?for(;$v=current($arr);){ echo $v,'<br />'; next($arr); next($arr);}//执行结果,没有反应,这是为什么呢?//原因是前面一个循环游标已经到了数组的最尾部了//因此,当执行current($arr)时总是返回false,//因此第二个循环是不会执行的//因此这里我们会用一个reset()方法来使游标重新指向数组的头部reset($arr);echo '<hr />';for(;$v=current($arr);){ echo $v,'<br />'; next($arr); next($arr);}//那么又如何走2步,退一步呢?reset($arr);echo '<hr />';for($flag=true;$v=current($arr);){ echo $v,'<br />'; if($flag){ next($arr); next($arr); $flag=false; }else{ prev($arr); $flag=true; }}/*返回你安若好安便好是便晴是天晴*///如何倒着循环呢?//这里要用到end()函数了,让数组的游标指向尾部end($arr);echo '<hr />';for(;$v=current($arr);prev($arr)){ echo $v,'<br />';}/*返回:天晴是便好安若你*///注意当数组的值等于0,false,null,undefined,""时,for循环的第二部会返回false,就会使循环终止reset($arr);echo '<hr />';$arr2 = array('你','若',0,'好','便','是','晴','天');for(;$v=current($arr2);next($arr2)){ echo $v,'<br />';}/*返回你若*/?>除了这些还可以用key()函数得到游标所指向的键。更多关于PHP数组相关内容感兴趣的读者可查看本站专题:《PHP数组(Arrary)总结》希望本文所述对大家PHP程序设计有所帮助。

本文实例讲述了PHP使用flock实现文件加锁的方法。分享给大家供大家参考。具体分析如下:flock在官方文档里的解释是:flock() 允许你执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的 Unix 派生版和甚至是Windows)。如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下),请将可选的第三个参数设置为 TRUE。锁定操作也可以被 fclose() 释放(代码执行完毕时也会自动调用)。简单来说,就是对一个文件进行锁定操作,使得多进程访问该文件时受到限制,从而防止冲突。举个例子:<?php $file = fopen("test.txt","w+"); if (flock($file,LOCK_EX)) { fwrite($file,"Write something"); flock($file,LOCK_UN); } else { echo "Error locking file!"; } fclose($file); ?>说明:1.这段代码的意思是,以读写方式打开文件test.txt,当一个用户调用该php页面时,即对test.txt文件进行操作,那么就会执行flock($file,LOCK_EX)代码,即将test.txt文件进行独占锁定(该文件只能由该用户进行读写操作),那么如果有其他新的用户想访问该文件,就会被阻塞,直到前者关闭文件(释放锁定)。2.如果将代码改成flock($file,LOCK_EX+LOCK_NB)表示锁定时直接返回错误,那么如果有新的用户访问该文件,就会输出“Error locking file!”3.该函数的语法是flock(file,lock,block),其中file必需。规定要锁定或释放的已打开的文件。lock 必需。规定要使用哪种锁定类型。block可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。例如:请写一段PHP代码,确保多个进程同时写入同一个文件成功function writeData($path, $mode,$data) { $fp = fopen($path, $mode); $retries = 0; $max_retries = 100; do{ if ($retries > 0) { usleep(rand(1, 10000)); } $retries += 1; }while (!flock($fp, LOCK_EX) and $retries<= $max_retries); if ($retries == $max_retries) { return false; } fwrite($fp, "$data\n"); flock($fp, LOCK_UN); fclose($fp); return true; }希望本文所述对大家的php程序设计有所帮助。

命名规范 Θ 类文件都以.class.php为后缀,使用驼峰法命名,并且首字母大写,例如 Pay.class.php; Θ 类名和目录_文件名一致。例如:类名Zend_Autoloader的目录是Zend/Autoloader.class.php; Θ 函数的命名使用小写字母和下划线的方式。例如:get_client_ip; Θ 方法的命名使用驼峰法,首字母小写或者使用下划线"_",例如listComment(),_getResource(),通常下划线开头的方法属于私有方法; Θ 属性的命名使用驼峰法,首字母小写或者使用下划线"_",如$username,$_instance,通常下划线开头的属性属于私有属性; Θ 常量以大写字母和下划线"_"命名,如"HOME_URL"; 常用名词 1>list名词(单数),如listApple,一看我们就知道读取苹果列表,我们没有必要写成getApples或者listApples或readApples——因为get我们规定一般用于读取单个数据,如getApple.listApples不加s我们也知道是取苹果列表(保证尽量缩短变量命名); 2>get名词(单数); 3>名词Total,表示某个东西的总数。如expenseTotal; 4>found:表示某个值是否已经找到; 5>uccess或ok:一项操作是否成功; 6>done:某个工程是否完成; 7>error:是否有错误发生; 8>result:返回的结果 代码重构 1.函数或者方法体内的代码尽量控制在一个屏幕内。 2.类中不使用的方法随机删除。 3.修改别人的类中方法,要签名。 4.在每个模块内写个readme文件(用于比较复杂业务的说明或代码说明)。 5.尽量让每个类做自己的事,每个函数做一件事。 常用代码 用&&或||简化操作 简化前: 复制代码 代码如下: $a=1; $b = 0; if(isset($a)){ $b=1; print($b."\n"); } if($b!=0){ print($b."\n"); } 简化后: 复制代码 代码如下: $a=1; $b = 0; isset($a) && ($b=1) && print($b."\n"); $b == 0 || print($b."\n"); 明显代码看起来更加整齐,更加简单! 判断"=="时,把常量放在前面 之前: 复制代码 代码如下: $a = 1; if($a = 1){ echo '$a == 1'; } 之后: 复制代码 代码如下: $a = 1; if(1 = $a){ echo '$a == 1'; } 明显,常量放在前面的话,编译器就能判断错误。 正规格式: 复制代码 代码如下: $a = 1; if(1 == $a){ echo '$a == 1'; } 查找表法 之前: 复制代码 代码如下: /*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/ $error = 4; $state = 0; if($error == 4 || $error == 5 || $error == 7 || $error == 8){ $state = 1; } if($error == 1 || $error == 3 || $error == 6){ $state = 2; } echo "$state \n"; 之后: 复制代码 代码如下: /*错误码:4,5,7,8的时候返回状态1,错误码是1,3,6返回状态2*/ $error = 4; $state = 0; $arr = array(4 => 1, 5 => 1, 7 => 1, 8 => 1, 1 => 2, 3 => 2, 6 => 2); isset($arr[$error]) && ($state = $arr[$error]); echo "$state \n"; 明显代码更加凝练,更加清楚,更易懂,速度也更快! 总结 本来想把什么设计模式也往常用代码里放置,但是太多了,不太好放。这些只是微部而已! 大家如果有更好的写法的话,可以留言。

贴一段代码,在php中获取随机数组 不用多说,直接贴代码,php中的array_rand很变态,突破了正常人的理解,繁琐function create_random_ids( $min,$max,$limited ){ $_base_ids = range($min,$max); $_temp_key = array_rand ($_base_ids,min(count($_base_ids),

分类:腾博会官方网

时间:2016-10-22 14:27:11