1.数组函数arsort()的作用是什么?
分析:arsort()对数组进行逆向排序并保持索引关系,主要用于对那些单元顺序很重要的结合数组进行排序。成功则返回true,失败返回false。
2.简述include和require语句的区别:
分析:include和require都能把另外一个文件包含到当前文件中,
它们的区别是:发生异常时include产生警告,而require产生致命错误。
为了避免多次包含同一文件,可以用语句require_once()/include_once()来代替它们。
3.写出<?php echo 8%(-2) ?>的输出结果
0,%取余
4.如何实现字符串翻转
分析:用strrev()函数,示例如下:
<?php
$str = "abcdefg";
$str2 = strrev($str);
echo $str2;
?>
5.说出echo、print()、print_r()3个函数的区别
分析:echo是PHP语句,
print()和print_r()是函数。
语句没有返回值,而函数可以有返回值。
print()只能打印简单类型变量的值(如int、string等),
而print_r()可以打印复杂类型变量的值(如数组、对象等),
echo只能输出一个或多个字符串
6.写出显示客户端IP与服务器端IP的代码:
<?php
//客户端IP
function get_client_ip(){
if (getenv('HTTP_CLIENT_IP')) {
$client_ip = getenv('HTTP_CLIENT_IP');
}
elseif(getenv('HTTP_X_FORWARDED_FOR')){
$client_ip = getenv('HTTP_X_FORWARDED_FOR');
}
elseif (getenv('REMOTE_ADDR')) {
$client_ip = getenv('REMOTE_ADDR');
}
else () {
$client_ip = $HTTP_SERVER_VAR['REMOTE_ADDR'];
}
return $client_ip;
}
//服务器IP
function get_sever_ip(){
if (isset($_SERVER)) {
if ($_SERVER['SERVER_ADDR']) {
$huoqu_ip = $_SERVER['SERVER_ADDR'];
}
else{
$huoqu_ip = $_SERVER['LOCAL_ADDR'];
}
}
else{
$huoqu_ip = getenv('SERVER_ADDR');
}
return $huoqu_ip;
}
echo get_client_ip();
echo get_sever_ip();
?>
7.SQL中LEFT JOIN是什么意思?
分析:LEFT JOIN表示自然左外连接。
如tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),想要打印出各个学生姓名及对应的各科总成绩,则可用SQL语句:
select name , count(score) as sum_score from tbl_user left join tb1_score on tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.ID
8.如何修改session的生存时间?
分析:函数session_set_cookie_params()用来设置session的生存时间,该函数必须在session_start()函数调用之前调用。如调整session生存时间的代码如下所示:
<?php
//保存一天
$lifeTime = 24 * 3600;
session_set_cookie_params($lifeTime);
session_start();
$_SESSION["admin"] = true;
?>
9.写一个能够遍历一个文件夹下所有文件和子文件夹的函数
分析:scandir()函数遍历显示所有文件与文件夹下的文件,方法很简单。我们只要利用is_dir()判断再递归查找一次,这样就可以遍历目录下所有文件了。具体的函数代码如下所示:
<?php
function numfilesindir($thedir){
if (is_dir($thedir)) {
$scanarray = scandir($thedir);
for ($i=0; $i < count($scanarray); $i++) {
if ($scanarray[$i]!="." && $scanarray[$i]!="..") {
if (is_file($thedir ."/" .$scanarray[$i])) {
echo $scanarray[$i]."<br/>";
}
}
}
}else{
echo "Sorry, this Directory does not exist.";
}
}
echo numfilesindir("abc"); //测试的文件夹是abc,读者可以改成自己要测试的文件夹
?>
10.写一个过滤网页上所有JS/VBS脚本的正则表达式
分析:正则表达式是<script[^>]?>.?</script>/is,读者可通过下面的代码来测试。
<?php
$a="<script>this is a test</script>abc"; //这里有一段JS代码,然后有abc字符串
echo preg_replace('/\<script[^>]*?>.*?\<\/script\>/is','',$a); //看看输出结果是不是只是abc
?>
11.PHP中字符串的表现形式有哪些
分析:PHP中字符串的表现形式有3种:
1.单引号 'xxx'
2.双引号 "xxx"
3.定界符 <<<xxx,其用法是在后面提供一个标识符,然后在标识符后提供字符串,再在字符串后提供此标识符来结尾。
echo <<< EOT
<a href="$url" target="$target">name</a>
<<<对于大段的HTML代码特别方便,注意这里提供的标识符是EOT,中间的是HTML代码。定界符结束标志必须顶格写,并且要有分号结束
12.谈谈你对MVC的认识
分析>MVC(Model/View/Controller)模式包括3部分,Model是应用对象;View是应用界面,Controller定义用户界面对用户输入的响应方式。
Model:模式是应用程序的主体部分。模型表示业务数据,或者业务逻辑。
View:视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面
Controller:控制器的工作就是根据用户的输入,控制用户界面数据显示和更新Model对象状态
13.sort()、asort()、ksort()有什么区别?
分析:
sort():根据数组中元素的值,以英文字母顺序排列,索引键从0到n-1重新编号。主要是当数组索引键的值无关痛痒时用来给数组排序。
asort():与sort一样把数组的元素按字母顺序排列,不同的是所有索引键都保留。
ksort():根据数组中索引键的值,以英文字母顺序排列,特别适合用于希望把索引键排序的联想数组。
14.说出输出结果
<?php
$num = 10;
function multiply(){
$num = $num * 10;
}
multiply();
echo $num;
?>
10。考察作用域。如果$num为全局变量(global $num或者$_GLOBALS['num'])结果会不同。
15.以下哪个函数可以打开文件且能读写文件信息:
A.fget() B.file_open() C.fopen() D.open_file()
C,fopen()可以用来开启文件以读 / 写
16.写一个函数验证电子邮件的格式
<?php
//邮件正确返回true,否则返回false
function validateEmail($email){
if (preg_match("/^[a-zA-Z]+@[a-zA-Z]+\.[a-zA-Z]+$/",$email)) {
return true;
}
else{
return false;
}
}
echo validateEmail("user@sina.com");
?>
17.使用PHP写一段简单查询:
分析:查出所有名为“张丽丽”的数据。
表名User
Name Tel Content Date
张丽丽 13011632222 本科 2012-10-11
王晓晓 0531-82796625 研究生 2012-10-15
$mysql_db = mysql_connect("local","root","pass");
@mysql_select_db("DB",$mysql_db);
$result = mysql_query("select * from User where Name='张丽丽'");
while($row = mysql_fetch_array($result)){
echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];
}
18.说明PHP中传值与传引用的区别:
分析:
按值传递:函数范围内对值的任何改变,在函数外部都会被忽略
按引用传递:函数范围内对值的任何改变,在函数外部也能反映出这些修改
按值传递时,PHP必须复制值,特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递则不需要复制值,对于性能提高很有好处。
19.从一个标准URL里取出文件的扩展名
例如:http://www.sina.com.cn/abc/de/fg.html?id=1取出html
<?php
function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(".",$file);
return $ext[1];
}
echo getExt("http://www.sina.com.cn/abc/de/fg.html?id=1");
?>
20.用PHP打印出前一天的时间,格式xxxx-xx-xx xx:xx:xx
<?php
echo date("Y-m-d H:i:s",strtotime("-1 day"));
?>
21.一般使用哪些工具进行版本控制?
分析:CVS和SVN(SVN强大)
22.优化MySQL数据库的方法:
分析:
1>数据库设计方面允许数据亢余,避免JOIN操作,以提高查询效率
2>系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,快慢表,快表只留最新数据,慢表示历史存档。
3>检查有没有少加索引
4>写高效的SQL语句
5>只从数据库取必须的数据,只传送必须的SQL语句
6>必要的时候用不同的存储引擎,减少死锁和查询速度
23.创建vote表用于记录单选投票用户的数据:
create table vote
(
id int unsigned not null auto_increment,
ip varchar(15) not null,
time datetime not null,
iid int not null,
primary key (id)
)
24.投票人数太多导致网站出现too many connection错误,如何解决?
分析:
方法一:加大MySQL的最大连接数
默认为100,修改编辑my.ini,修改max_connections=1000/10000
方法二:不用MySQL数据库,直接写文件,写XML文件
方法三:由于用MySQL语句调用数据库时,每次执行语句前,会做一个临时变量打开数据库,每次调用玩需要关闭MySQL临时变量。
25.session 和 cookie 的区别
分析:cookie机制采用客户端保持状态的方案,
而session机制采用的是在服务器端保持状态的方案,
存活时间上也有区别,
session根据浏览器进程存在而存在,
cookie通过setcookie($name,$val.$exp,'/')来设置保存时间
网友评论