PHP技术人员-口试总结PHP篇
PHP技术人员--面试总结PHP篇
1、实现中文字符串截取无乱码方法
开启mbstring扩展,然后自定义函数:
<?php header('content-Type:text/html:charset=utf-8'); function substr_utf8($str, $start, $length = null) { return join("", array_slice( preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY), $start, $length) ); } //实例 (PS:^_^不错的php学习交流群:276167802,验证:csl,有兴趣的话可以加入进来一起讨论) $str = "我是一个good男孩!"; echo substr_utf8($str, 2, 4);
2、用PHP打印前一天的时间
<?php header('content-Type:text/html:charset=utf-8'); echo date('Y-m-d H:i:s',strtotime('-1 day'));
3、不适用第三个变量交换2个变量的值
<?php header('content-Type:text/html:charset=utf-8'); $a = 'a'; $b = 'b'; list($a,$b) = array($b,$a); echo $a,$b;
4、将1234567890,转换成1,234,567,890
header('content-Type:text/html:charset=utf-8'); $str = '1234567890'; //反转字符串 $str = strrev($str); //使用逗号分隔得到098,765,432,1, $str = chunk_split($str,3,','); //再次反转 $str = strrev($str); //去掉左边的, $str = ltrim($str,','); echo $str;
5、实现utf8字符串反转
不能使用strrev,中文会出错
function strrev_utf8($str){ return join("",array_reverse(preg_split("//u",$str))); } $str = "我是一个good男孩"; echo strrev_utf8($str); 6、取url的文件扩展名,尽量多的去实现方法 $str = "www.baidu.com/index.php"; function get_ext1($str){ return strrchr($str,'.'); } function get_ext2($str){ return substr($str,strrpos($str,'.')); } function get_ext3($str){ $str = pathinfo($str); return $str['extension']; } function get_ext4($str){ $arr = explode('.',$str); return $arr[count($arr)-1]; } function get_ext5($str){ $pattern = '/^[^\.]+\.([\w]+)$/'; return preg_replace($pattern,'${1}',basename($str)); }
7、写一个函数,将字符串open_door转换为OpenDoor
$str = "open_door"; function change_str($str){ $arr = explode('_',$str); $arr = array_map('ucfirst',$arr); return implode('',$arr); } echo change_str($str);
8、单例模式
<?php class Mysql{ private static $instance = null; private $conn; //设置为私有,不允许通过new获得对象 private function __construct(){ $conn = mysql_connect('localhost','root','123456'); } //获取实例方法 public static function getInstance(){ if(! self::$instance instanceof self){ self::$instance = new self; } return self::$instance; } //禁止克隆 private function __clone(){} } $db = Mysql::getInstance(); 9、写一段PHP代码,确保多个进程同时写入同一个文件成功 <?php $fp = fopen("lock.txt","w+"); if(flock($fp,LOCK_EX)){ //获得写锁 fwrite($fp,'write something'); flock($fp,LOCK_UN); }else{ echo "file is locking..."; } fclose($fp);
10、从一个完成的url获取文件扩展名
<?php $url = 'http://www.baidu.com/a/b/index.php?id=1'; $arr = parse_url($url); $fname = basename($arr['path']); $arr = explode('.',$fname); echo $arr[count($arr)-1];
11、写一个函数可以便利一个文件夹下的所有文件和子文件夹
<?php function my_scandir($dir){ $files = array(); if(is_dir($dir)){ if($handle = opendir($dir)){ while(($file = readdir($handle)) !== false){ if($file != "." && $file != ".."){ if(is_dir($dir.'/'.$file)){ $files[$file] = my_scandir($dir.'/'.$file); }else{ $files[] = $dir.'/'.$file; } } } closedir($handle); return $files; } } } var_dump(my_scandir('D:\wamp\www\study'));
12、论坛中无限分类实现原理
首先设计数据库表
create table category( cate_id int unsigned not null auto_increment primary key, cat_name varchar(30) not null default '', parent_id int unsigned not null default 0 ) engine=innodb charset=utf8; 然后用函数去递归实现,无限分类 function tree($arr,$pid=0,$level=0){ static $list = array(); foreach($arr as $v){ //如果是顶级分类,则存入$list //然后以此节点为根几点,遍历其子节点 if($v['parent_id'] == $pid){ $v['level'] = $level; $list[] = $v; tree($arr,$v['cat_id'],$level+1); } } return $list; }
13、计算2个文件的相对路径
<?php $a = '/a/b/c/d/a.php'; $b = '/a/b/e/f/b.php'; $arr1 = explode('/',dirname($a)); $arr2 = explode('/',dirname($b)); for($i=0,$len=count($arr2);$i<$len;$i++){ if($arr1[$i] != $arr2[$i]){ break; } } //不在用一个根目录 if($i == 1){ $ret = array(); } //在同一个根目录下 if($i != 1 && $i < $len){ $ret = array_fill(0,$len-$i,".."); } //在同一个目录下 if($i == $len){ $ret = array('./'); } $ret = array_merge($ret,array_slice($arr1,$i)); echo implode('/',$ret); 14、约瑟夫环问题 <?php function king($n,$m){ $monkey = range(1,$n); $i = 0; while(count($monkey) > 1){ $i += 1; $head = array_shift($monkey);//一个个出列最前面的 if( $i % $m != 0){ //如果不是m的倍数,则返回尾部,否则就出列了 array_push($monkey,$head); } } return $monkey[0]; } echo king(10,7);
15、PHP实现双向队列
<?php class Dqueue{ private $queue = array(); public function addFirst($item){ return array_unshift($this->queue,$item); } public function addLast($item){ return array_push($this->queue,$item); } public function getFirst(){ return array_shift($this->queue); } public function getLast(){ return array_pop($this->queue); } }
希望本文对广大php开发者有所帮助,感谢阅读本文。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'utilisation de return en langage C est la suivante : 1. Pour les fonctions dont le type de valeur de retour est void, vous pouvez utiliser l'instruction return pour terminer l'exécution de la fonction plus tôt. 2. Pour les fonctions dont le type de valeur de retour n'est pas void, la fonction de ; l'instruction return sert à terminer l'exécution de la fonction.Le résultat est renvoyé à l'appelant ;3. Terminer l'exécution de la fonction plus tôt que prévu.À l'intérieur de la fonction, nous pouvons utiliser l'instruction return pour terminer l'exécution de la fonction plus tôt. si la fonction ne renvoie pas de valeur.

Fonction signifie fonction. Il s'agit d'un bloc de code réutilisable avec des fonctions spécifiques. C'est l'un des composants de base d'un programme. Il peut accepter des paramètres d'entrée, effectuer des opérations spécifiques et renvoyer des résultats. code pour améliorer la réutilisabilité et la maintenabilité du code.

Code source : publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# Sortie La sortie du code ci-dessus peut simplement conclure : return est exécuté avant finalement. Jetons un coup d'œil à ce qui se passe au niveau du bytecode. Ce qui suit intercepte une partie du bytecode de la méthode case1 et compare le code source pour annoter la signification de chaque instruction dans

Titre : Exemple d'utilisation de la fonction Array.Sort pour trier un tableau en C# Texte : En C#, un tableau est une structure de données couramment utilisée, et il est souvent nécessaire de trier le tableau. C# fournit la classe Array, qui possède la méthode Sort pour trier facilement les tableaux. Cet article explique comment utiliser la fonction Array.Sort en C# pour trier un tableau et fournit des exemples de code spécifiques. Tout d’abord, nous devons comprendre l’utilisation de base de la fonction Array.Sort. Tableau.Donc

Dans cet article, nous découvrirons la fonction enumerate() et le but de la fonction « enumerate() » en Python. Qu'est-ce que la fonction enumerate() ? La fonction enumerate() de Python accepte une collection de données comme paramètre et renvoie un objet d'énumération. Les objets d'énumération sont renvoyés sous forme de paires clé-valeur. La clé est l'index correspondant à chaque élément, et la valeur est les éléments. Syntaxe enumerate(iterable,start) Paramètres iterable - Les données transmises dans la collection peuvent être renvoyées sous forme d'objet d'énumération, appelé iterablestart - Comme son nom l'indique, l'index de départ de l'objet d'énumération est défini par start. si nous ignorons

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Explication détaillée du rôle et de la fonction de la table MySQL.proc MySQL est un système de gestion de bases de données relationnelles populaire. Lorsque les développeurs utilisent MySQL, ils impliquent souvent la création et la gestion de procédures stockées (StoredProcedure). La table MySQL.proc est une table système très importante. Elle stocke les informations relatives à toutes les procédures stockées dans la base de données, y compris le nom, la définition, les paramètres, etc. Dans cet article, nous expliquerons en détail le rôle et les fonctionnalités de la table MySQL.proc

Lors de la programmation en PHP, nous avons souvent besoin de fusionner des tableaux. PHP fournit la fonction array_merge() pour terminer la fusion du tableau, mais lorsque la même clé existe dans le tableau, cette fonction écrasera la valeur d'origine. Afin de résoudre ce problème, PHP fournit également une fonction array_merge_recursive() dans le langage, qui peut fusionner des tableaux et conserver les valeurs des mêmes clés, rendant la conception du programme plus flexible. tableau_merge
