几道php基础面试题
前言
题目
<?php /**
* 给定url,获取文件后缀
* @param string $url
* @return string
*/
function getUrlPostfix ($url)
{
$url_arr = explode('.', $url);
$postfix = $url_arr[count($url_arr) - 1]; $substr = substr($postfix, 0, 3);
return $substr;
} $url = "http://www.feiyan.info/test.php?c=class&m=method";
$str = getUrlPostfix($url);
echo $str . "\n";
<?php /**
* 每隔3个字符,用逗号进行分隔
* @param string $str
* @return string
*/
function splitStrWithComma ($str)
{
$arr = array();
$len = strlen($str); for ($i = $len - 1; $i >= 0;) {
$new_str = "";
for ($j = $i; $j > $i - 3 && $j >= 0; $j --) {
$new_str .= $str[$j];
}
$arr[] = $new_str;
$i = $j;
} $string = implode(',', $arr); // 翻转字符串自己实现
// $string = strrev($string);
for ($i = 0, $j = strlen($string) - 1; $i <= $j; $i ++, $j --) {
$tmp = $string[$i];
$string[$i] = $string[$j];
$string[$j] = $tmp;
} return $string;
} $str = "1234567890";
$new_str = splitStrWithComma($str);
echo $new_str . "\n";
(3)写一个php函数算出两个文件的相对路径。例如$a="/a/b/c/d/e.php"; $b="/a/b/12/34/c.php",B相对于A的相对路径是什么?
<?php /**
* 求$b相对于$a的相对路径
* @param string $a
* @param string $b
* @return string
*/
function getRelativePath ($a, $b)
{
$patha = explode('/', $a);
$pathb = explode('/', $b); $counta = count($patha) - 1;
$countb = count($pathb) - 1; $path = "../";
if ($countb > $counta) {
while ($countb > $counta) {
$path .= "../";
$countb --;
}
} // 寻找第一个公共结点
for ($i = $countb - 1; $i >= 0;) {
if ($patha[$i] != $pathb[$i]) {
$path .= "../";
$i --;
} else { // 判断是否为真正的第一个公共结点,防止出现子目录重名情况
for ($j = $i - 1, $flag = 1; $j >= 0; $j --) {
if ($patha[$j] == $pathb[$j]) {
continue;
} else {
$flag = 0;
break;
}
} if ($flag)
break;
else
$i ++;
}
} for ($i += 1; $i <= $counta; $i ++) {
$path .= $patha[$i] . "/";
} return $path;
} $a = "/a/c/d/e.php";
$b = "/a/c.php"; $path = getRelativePath($a, $b);
echo $path;
(4)计算两个日期之间的天数
<?php /**
* 求两个日期之间相差的天数(针对1970年1月1日之后,求之前可以采用泰勒公式)
* @param string $day1
* @param string $day2
* @return number
*/
function diffBetweenTwoDays ($day1, $day2)
{
$second1 = strtotime($day1);
$second2 = strtotime($day2); if ($second1 < $second2) {
$tmp = $second2;
$second2 = $second1;
$second1 = $tmp;
} return ($second1 - $second2) / 86400;
} $day1 = "2013-07-27";
$day2 = "2013-08-04"; $diff = diffBetweenTwoDays($day1, $day2);
echo $diff."\n";
几道php基础面试题的更多相关文章
- 100道Java基础面试题收集整理(附答案)
不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...
- 最新28道java基础面试题-上
28道java基础面试题 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪 ...
- 28道java基础面试题-下
28道java基础面试题下 15.Java语言如何进行异常处理,关键字:throws.throw.try.catch.finally分别如何使用? 答:Java通过面向对象的方法进行异常处理,把各种不 ...
- 50道JavaScript基础面试题(附答案)
https://segmentfault.com/a/1190000015288700 1 介绍JavaScript的基本数据类型 Number.String .Boolean .Null.Undef ...
- (转)50道JavaScript基础面试题(附答案)
https://segmentfault.com/a/1190000015288700 1 介绍JavaScript的基本数据类型 Number.String .Boolean .Null.Undef ...
- 20道HTML基础面试题(附答案)
以下是我整理的一些HTML的基础面试体,并自己整理了答案. 1 DOCTYPE有什么作用?标准模式与混杂模式如何区分?它们有何意义? 告诉浏览器使用哪个版本的HTML规范来渲染文档.DOCTYPE不存 ...
- 猜猜两道Java基础面试题的结果
class TA { public String s = "A"; public String getS() { return s; } } class TB extends TA ...
- 2017常见的50道java基础面试题整理(附答案)
1.作用域public,private,protected,以及不写时的区别 答: 区别如下: 2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是 ...
- 100道Java基础面试题
1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Client/Server),客户端/服务端,桌面应用程序 2.你所知道网络协议有那些? H ...
随机推荐
- 玩转iOS开发 - 数据缓存
Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...
- ios8中百度推送接收不到
ios8中百度推送接收类型会有所改变: //消息推送注冊 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { ...
- Linux安装Weblogic9.2
1.先确认安装的环境是不是LINUX AS 4 [root@yaoxj ~]# cat /etc/issue Red Hat Enterprise Linux AS release 4 (Nahant ...
- 使用F#开发量化模型都缺什么?
量化模型多数是基于统计的,因此,统计运算库应该是必备的.在Matlab.R中包含了大量的统计和概率运算,可以说拿来就用,非常方便,相比之下,F#的资源就很少了,这里给大家提供几个链接,可以解决一部分问 ...
- asp.net读取Excel中的数据问题
1.Microsoft.ACE.OLEDB.12.0 与Microsoft.Jet.OLEDB.4.0 在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Exc ...
- Html.Action和Html.RederAction来创建子视图
1. 父视图和子视图 父视图是包含了调用返回子视图的动作方法的视图. 父视图包含大部分用于呈现页面的HTML.子视图仅包含用于展示视图某部分的必须的标记. 例如,一个子视图创建一个列表,视图可能仅仅包 ...
- (转)asp.net注册实现下一步
在asp.net中有两种容器控件,其中包括panel和placeholder控件. 使用panel控件可以对控件进行分组.一帮助组织web窗体也的内容,将控件组织在面板中,可提供有关在运行时控件应如何 ...
- MFC 点击改变文本 加法计时器 伸缩窗体
1.添加所需控件,设置ID:labNum1,txtNum1.txtNum2.txtNum3.btnAdd,并将labNum1的属性Notify->true(控件在被单击或双击时可以发送消息) 2 ...
- Linux下MySQL的彻底卸载和安装配置字符集
前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...
- php json_decode 后,数字对象转换成了 科学计数法 的解决方案
php json_decode 后,数字对象转换成了 科学计数法 $obj='{"order_id":213477815351175,"buyer":10000 ...