PHP

1. 用PHP打印出前一天的时间,格式是2006-5-10 22:21:21
<?php
echo  date( "Y-m-d H:i:s" , time() - 60 * 60 * 24);
echo  date( "Y-m-d H:i:s" , strtotime( "-1 day"));
?>
2. echo(),print(),print_r()的区别

echo 是语言结构,无返回值;print 功能和echo基本相同,不同的是print是函数,有返回值;print_r 是递归打印,用于输出数组对象。

3. 能够使HTML和PHP分离开使用的模板引擎

PHP模板引擎和框架是PHP面试题里面必考的一些知识点,总的来说,了解smarty或者国内比较不错的ThinkPHP都可以应对这类的问题,其实PHP这门语言本身也就是一个模板引擎。当然对实际应用的来说,大量使用正则的PHP模板引擎会提高后他开发和前端开发的效率,但是肯定会牺牲首次加载的效率。我在一位大牛的文章中看到过Blitz这个模板引擎,据说是使用C++写的PHP扩展,号称是速度最快的模板引擎,有兴趣的可以去了解一下。

4. 如何实现字符串翻转?

PHP本身就有字符串翻转的函数:strrev(),当然也可以定义简单的函数来完成,下面的方法一和方法二只能翻转非汉字字符串,方法三用来翻转字符串。

<?php
//方法一:PHP系统函数
echo  strrev( "ABCDEF") . "<br />";
//方法二:自定义函数,不能翻转汉字。
function  myStrrev( $str)
{
$newStr  =  "";
for( $i = 0$i < strlen( $str);  $i ++)
{
$newStr  =  $str [ $i ] . $newStr;
}
return  $newStr;
}
echo  myStrrev( "ABCDEF") . "<br />";
//方法三,翻转汉字
$newcnStr  =  "";
$cnStr  =  str_split( "我爱你" , 3);  //每个汉字占3个字节
//也可以使用array_reverse()翻转后输出

for( $j = count( $cnStr) - 1$j >= 0$j --)
{
$newcnStr  .=  $cnStr [ $j ];
}
echo  $newcnStr;
?>
5. 执行程序段将输出__?
<?php
//参考手册》语言参考》运算符》算术运算符》%为取模运算,输出0
echo  8 %( - 2) . "<br />";
//取模 $a % $b 在 $a 为负值时的结果也是负值。输出-2
echo (( - 8) % 3) . "<br />";
//输出2
echo ( 8 %( - 3)) . "<br />";
?>
6. 语句 include 和 require 都能把另外一个文件包含到当前文件中,它们的区别是____;为了避免多次包含同一文件,可以用语句____来代替它们?

答:在如何处理失败时,include() 产生一个警告而 require() 则导致一个致命错误;require_once()/include_once()

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

别人写的代码,已经足够简洁和给力了。

<?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;
}
}
}
echo  "<pre>";
print_r( my_scandir( "D:\PHP\htdocs"));
?>
8. 你如何利用 PHP 解决 HTTP 的无状态本质?

最主要的俩各选择是session和cookie。使用session的方法是在每一页的开始加上 session_start(),然后利用$_SESSION散列表来储存session变量。至于cookie你只需记着一个原则:在输出任何文字之前调用set_cookie()函式,可以参考PHP会话管理之Cookie的使用,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 变量。
还有一个不那么可靠的方法,就是利用访客的 IP 地址,这个方法有特定的危险性。

9. 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列,要求执行效率高,并说明如何改善执行效率(该函数必须自己实现,不能使用php函数)。

学习C语言的时候各种排序方法是必须掌握的基本概念,尤其是冒泡排序法是程序员都很熟悉的算法,其他的可以查看这篇很古老的文章:http://blog.csdn.net/rerli/archive/2003/12/15/19040.aspx,显然C/C++里面的指针和堆可以实现一些快速高效但是不稳定的算法,PHP里面保守一些还是采用稳定性比较好,算法时间复杂度适中的冒泡排序法。

<?php
function  BubbleSort( & $arr)
{
$cnt = count( $arr);
$flag = 1;
for( $i = 0; $i < $cnt; $i ++)
{
if( $flag == 0)
{
return;
}
$flag = 0;
for( $j = 0; $j < $cnt - $i - 1; $j ++)
{
if( $arr [ $j ] > $arr [ $j + 1 ])
{
$tmp = $arr [ $j ];
$arr [ $j ] = $arr [ $j + 1 ];
$arr [ $j + 1 ] = $tmp;
$flag = 1;
}
}
}
}
$test = array( 1 , 3 , 6 , 8 , 2 , 7);
BubbleSort( $test);
echo  "<pre>";
var_dump( $test);
?>
10. 以下哪一句不会把 John 新增到 users 阵列?

PHP中一些数组函数和字符串函数是基础中的基础。

<?php
$users []  =  "john";
//成功把 John 新增到阵列 users。 
array_add( $users ,  "john");
//函式 array_add() 无定义。 
array_push( $users , "john");
//成功把 John 新增到阵列 users,参考array_push()函数。 
$users  ||=  "john";
//语法错误,不存在这个运算符。
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值