设为首页 收藏本站
查看: 523|回复: 0

[经验分享] php常见面试题目(编程篇)

[复制链接]

尚未签到

发表于 2017-3-29 14:10:05 | 显示全部楼层 |阅读模式
  ~~文接前篇~~
  二.编程篇
  1. 写个函数来解决多线程同时读写一个文件的问题。

答:

<?php
function swritefile($filename,$writecontent,$openmode='w'){
if(@$fp=fopen($filename,$openmode)){
flock($fp,2);
fwrite($filename,$writecont);
fclose($fp);
return true;
}esle{
return false;
}
}
?>
   

2. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)

答:

<?php
function emailCheck($str){
$valid = '/^[\w\-\.]+@[\w\-]+(\.[\w\-]+)+$/';
if(preg_match($valid, $str)){
echo 'ok';
}else{
echo 'no';
}
}
?>
   

3、写一个函数,可以遍历文件夹下的所有文件和文件夹。
  答:

<?php
function listDir($path){
if($handle = opendir($path)){
while(false !== ($file = readdir($handle))){
if($file != '.' && $file != '..'){
echo $file;
}
}
closedir($handle);
}
}
?>
   


4.    写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
  答:

<?php
function getExtension1($url){
$a = explode("/",$url);
$c = explode("?",$a[count($a)-1]);
$b = explode(".",$c[0]);
return $b[1];
}
function getExtension2($url){
$parse_url = parse_url($url);
$path = $parse_url['path'];
$pos = strrpos($path,'.');
return !$path || !$pos ? NULL : substr($path,$pos);
}
function getExtension3($p) {
$pos = strrpos($p,'.'); //strrpos()找出字元最后一次出现的位置
$ex = substr($p,$pos,4);
return $ex;
}
?>
   

5. 写出冒泡排序算法(要写出代码)操作数组。

答:

<?php
function maopao($arr) {
for($i=0; $i<count($arr); $i++){
for($j=$i+1; $j<count($arr); $j++){
if($arr[$i] > $arr[$j]){
$temp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $temp;
}
}
}
print_r($arr);
}
?>
   

6. 写个函数用来对二维数组排序。

答:

<?php
function array_sort_by_any_row($array_name, $row_id,$order_type){
$array_temp=array();
foreach($array_name as $key=>$value){
$array_temp[$key]=$value[$row_id];               
}
if($order_type==="ASC"){ //顺序
asort($array_temp);
} else{
arsort($array_temp);
}  
$result_array=array();
foreach($array_temp as $key=>$value){
$result_array[$key]=$array_name[$key];     
}
return$result_array;   
}
$arr = array(array('num'=>5,'value'=>6),
array('num'=>2, 'value'=>39),
array('num'=>36, 'value'=>29)
);
$sortarr = array_sort_by_any_row($arr, 'num', 'DESC');
print_r($sortarr);
?>
   

7. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。

答:

<?php
$path = str_replace('\\', '/',__FILE__);
echo $path.'<br />';
function extname1($path) {
return strrchr($path, '.');
}
function extname2($path) {
$position =strrpos($path, '.');
return substr($path, $position);
}
function extname3($path) {
$arr =explode('.', $path);
return $arr[count($arr) - 1];
}
function extname4($path) {
preg_match_all('/[\w\/\:\-]+\.([\w]+)$/', $path, $out);
return $out[1][0];
}
function extname5($path) {
return preg_replace('/^[^\.]+\.([\w]+)$/', '${1}', basename($path));
}
print_r(extname5($path));
?>
   

8.一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。

答:

yuesefu(约瑟夫)环问题。
<?php
function yuesefu($n,$m) {
$r=0;
for($i=2;$i<=$n; $i++) {
$r=($r+$m)%$i;
}
return $r+1;
}
print_r(yuesefu(3,3));
?>
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-357197-1-1.html 上篇帖子: PHP多维数组排序代码例 下篇帖子: php ob_start 与 ob_end_flush()
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表