常见试题

1、获取上一个月的第一天和最后一天

Copy Highlighter-hljs
1、获取上一个月的第一天和最后一天 上个月第一天: echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 month')); // 计算出本月第一天再减一个月 上个月最后一天: echo date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day')); // 计算出本月第一天再减一天 2.获取当月第一天及最后一天. $BeginDate=date('Y-m-01', strtotime(date("Y-m-d"))); echo $BeginDate; echo "<br/>"; echo date('Y-m-d', strtotime("$BeginDate +1 month -1 day")); echo "<br/>"; 3.获取当天年份、月份、日及天数. echo " 本月共有:".date("t")."天"; echo " 当前年份".date('Y'); echo " 当前月份".date('m'); echo " 当前几号".date('d'); echo "<br/>"; 4.使用函数及数组来获取当月第一天及最后一天,比较实用 function getthemonth($date) { $firstday = date('Y-m-01', strtotime($date)); $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day")); return array($firstday,$lastday); }

2.PHP 代码 ,确保多个进程同时写入同一个文件成功

PHP 暂停函数 sleep() 与 usleep() 的区别
sleep()是暂停多少秒,usleep()是暂停多少微秒
注意:usleep()单位是微秒,1秒 = 1000毫秒 ,1毫秒 = 1000微秒,即1微秒等于百万分之一秒。

Copy Highlighter-hljs
function writeData($filepath, $data) { $fp = fopen($filepath,'a'); do{ usleep(100); }while (!flock($fp, LOCK_EX)); //LOCK_EX 取得独占锁定(写入的程序)进行排它型锁定 获取锁 有锁就写入,没锁就得 $res = fwrite($fp, $data."\n"); flock($fp, LOCK_UN); //LOCK_UN 释放锁定(无论共享或独占)。 fclose($fp); return $res; }

3.写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

Copy Highlighter-hljs
答案1: function getExt($url){ $arr = parse_url($url); $file = basename($arr['path']); $ext = explode(".",$file); return $ext[1]; } 答案2: function getExt($url) { $url = basename($url); $pos1 = strpos($url,"."); $pos2 = strpos($url,"?"); if(strstr($url,"?")){ return substr($url,$pos1 + 1,$pos2 - $pos1 - 1); } else { return substr($url,$pos1); } }

**4.使用五种以上方式获取一个文件的扩展名。要求:dir/upload.image.jpg,找出 .jpg 或者 jpg 必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数 **

Copy Highlighter-hljs
方法1function getExt1($filename) { $arr = explode('.',$filename); return array_pop($arr);; } 方法2function getExt2($filename) { $ext = strrchr($filename,'.'); return $ext; } 方法3function getExt3($filename) { $pos = strrpos($filename, '.'); $ext = substr($filename, $pos); return $ext; } 方法4function getExt4($filename) { $arr = pathinfo($filename); $ext = $arr['extension']; return $ext; } 方法5function getExt5($filename) { $str = strrev($filename); return strrev(strchr($str,'.',true)); }

5.写一个函数,能够遍历一个文件夹下的所有文件和子文件夹

Copy Highlighter-hljs
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; } } }

6.遍历一个文件夹下所有文件和子文件夹的函数

Copy Highlighter-hljs
function getTree($data, $pid = 0, $level = 0) { static $tree = array(); foreach ($data as $k => $v) { //如果是0,将其存到$tree 中,并以此节点为根节点,遍历其子节点 if ($v["pid"] == $pid) { $v["level"] = $level; $tree[] = $v; getTree($data, $v["id"], $level + 1); } } return $tree; }

7.如何判断一个字符串是否是合法的日期模式

Copy Highlighter-hljs
function checkTime($data){ if(date('Y-m-d H:i:s',strtotime($data))==$data){ return true; }else{ return false; } }

8.单例模式

Copy Highlighter-hljs
三私一公 class Signle { private static $instance = null; private function __construct() { } private function __clone() { } public static function getInstance() { if (is_null(self::$instance)) { self::$instance = new self(); } return static::$instance; } }
posted @   caibaotimes  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示