标题

[PHP笔试题]php程序员师常见的笔试题

责任编辑:admin
日期:2012-11-26

1.获取字母组合
题目要求:
做一个三位字母的组合功能,例如:”abd,ade,acc,aef”等等:
目标
1.字母所有的组合需要打印出来
2.字母组合要排除,abc(三个字母连续),cba(三个字母倒叙),aaa(三个字母相同)的情况
3.最后结果需要计算出abc情况的数量,cba情况的数量,aaa情况的数量,以及打印出来正确字母组合的数量
———————————————————————-
代码:

  1. <?php 
  2. $b=array(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z); 
  3. for($i=0;$i<=25;$i++){ 
  4.     for($j=0;$j<=25;$j++){ 
  5.         for($k=0;$k<=25;$k++){ 
  6.             if($i==$j-1 && $k==$j+1){//abc情况的数量 
  7.                 $m++; 
  8.             }elseif($i==$j+1 && $k==$j-1){//cba情况的数量 
  9.                 $n++; 
  10.             }elseif($i==$j && $k==$i){//aaa情况的数量 
  11.                 $o++; 
  12.             }else
  13.                 $p++; 
  14.                 echo $b[$i].$b[$j].$b[$k]."<br />"
  15.             } 
  16.         } 
  17.     } 
  18. echo $p."<br />"
  19. echo $m."<br />"
  20. echo $n."<br />"
  21. echo $o."<br />"
  22. ?> 
  23. 代码2: 
  24. <?php 
  25. $r=range(a,z); 
  26. foreach ($r as $a => $x){ 
  27.     foreach ($r as $b => $y){ 
  28.         foreach ($r as $c => $z){ 
  29.             if($a==$b+1&&$b==$c+1)$abc++; 
  30.             if($c==$b+1&&$b==$a+1) 
  31.                 $cba++; 
  32.             else 
  33.                 $s[$a.$b.$c]=$x.$y.$z
  34.         } 
  35.     } 
  36. $r=$s
  37. echo 'abc:'.$abc.'<br>'
  38. echo 'cba:'.$cba.'<br>'
  39. echo 'aaa:'.$aaa.'<br>'
  40. foreach ($r as $t){ 
  41.     echo $t.'<br>'
  42. ?> 

 2.通过不同的条件组装 一个sql语句

题目要求:
目前需要通过不同会员信息的条件,对会员进行高级查询,这个时候就需要对sql语句的组装工作。需要查询的条件有,会员编号,会员昵称,会员帐号,会员注册时间,会员性别,条件通过GET方式传递给程序,通过任意选择这些条件进行查询,得到相应的结果。
参考:
会员表为user_bas 及其字段结构;
查询条件和数据库字段对应关系:
会员编号:id ;结构:smallint(6),查询为精确查询(比如:查询编号为1 2的会员)
会员昵称:nickname;结构:varchar(20) (比如:查询昵称里有”魅力”的昵称)
会员帐号:uname;结构:varchar(16) 查询为模糊查询
会员注册时间:regtime;结构:int(10) 查询为时间段查询
会员性别:sex;结构:tingint(1) 查询为 查询为精确查询
目标:
写一段程序,实现这样的查询功能,”查询条件”需要的时候会增加和减少,考生需要编写一套灵活的程序
注意:
1。灵活性,
用户可以选择1个条件,也可以一个都不选择,也可以选择多个。”
2。考虑到系统的性能
有的面试者用:
“select * from user_bas where id=’$id’ and nickname=’$nickname’ and sex=’$sex’…”
是不可以的,如果没有$id的条件数据库也还要去便历,在超过10万的数据库就非常慢了。
3。不用考虑接受数据问题,和传递给数据库如何解释的问题。
如果你怎么接受不知道如何书写,你可以更简单的思考,现在有几个变量。$id,$nickname,$uname,$sex,$regtime 可以用这些变量,但有的为空;对于数据库如何去查询,还有就是,数据库如何解释不用关心,如query相关函数语句你不用写。
4.不允许使用”where 1″或”where 1=1″类型的语法

代码

  1. <?php 
  2. if($_SERVER['REQUEST_METHOD']=='GET'){ 
  3.     $id=$_GET['id']; 
  4.     $nickname=$_GET['nickname']; 
  5.     $uname=$_GET['uname']; 
  6.     $regtime=$_GET['regtime']; 
  7.     $sex=$_GET['sex']; 
  8.  
  9. $ConditionsNumber=5; 
  10. $ConditionsArray=array("$id ","$nickname","$uname","$regtime","$sex"); 
  11. $SearchSQLArray=array(" where id ='$id'"," where nickname = '$nickname'"," where uname='$uname'"," where regtime='$regtime'"," where sex='$sex'"); 
  12. for($i=0;$i<$ConditionsNumber;$i++){ 
  13.     if($ConditionsArray[$i]==""
  14.     $SearchSQLArray[$i]=""
  15.     $haveWhere=false; 
  16.     for($j=0;$j<$i;$j++){ 
  17.         $wherePosition=strpos($SearchSQLArray[$j],"where"); 
  18.         if(($wherePosition=="1″)&&($haveWhere==false)){ 
  19.             $SearchSQLArray[$i] = ereg_replace("where","and",$SearchSQLArray[$i]); 
  20.             $haveWhere=true; 
  21.         } 
  22.     } 
  23.  
  24. for($i=0;$i<$ConditionsNumber;$i++) 
  25.     $sql=$sql.$SearchSQLArray[$i]; 
  26.     $query="SELECT * FROM user_bas ".$sql." order by id;"
  27.  
  28. ?> 

 

3.目前有会员登陆的log记录数组,登陆日志里面有这个会员的编号(id)、会员帐号(uname)和登陆时间(logtime)。
通过这个数组需要得到如下统计:
(1)得到某一天中不同会员的登陆情况,一天内会员登陆了4次,就记4次。统计结果如:
在2006-07-20内的会员登陆情况
会员编号 会员帐号 会员登陆次数
1 User1 4次
3 User3 2次
2 User2 1次
(2)得到某几天内不同会员的登陆情况,会员在某一天登陆了很多次只记一次(也可以说会员在几天内有几天登陆了)。统计结果如:
在2006-07-20 到2006-07-22 的3天时间内的会员登陆情况:
会员编号 会员帐号 会员登陆次数
3 User3 3次
1 User1 2次
2 User2 2次
附件:
会员登陆日志数组:
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 19:18:02′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 18:15:03′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 13:50:12′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-22 13:12:09′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-22 11:10:08′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 10:52:54′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-22 08:16:04′);

$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 19:18:02′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 18:15:03′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 13:50:12′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-21 13:12:09′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-21 11:10:08′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 10:52:54′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 08:16:04′);

$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 19:18:02′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-20 18:15:03′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 13:50:12′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-20 13:12:09′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-20 11:10:08′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 10:52:54′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 08:16:04′);

代码:
______________________________________________________________________________
<?php
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 19:18:02′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 18:15:03′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 13:50:12′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-22 13:12:09′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-22 11:10:08′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-22 10:52:54′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-22 08:16:04′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 19:18:02′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 18:15:03′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 13:50:12′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-21 13:12:09′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-21 11:10:08′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 10:52:54′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-21 08:16:04′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 19:18:02′);
$userlog[] = array (“id” => 2, “uname” => ‘user2′, “logtime” => ’2006-07-20 18:15:03′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 13:50:12′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-20 13:12:09′);
$userlog[] = array (“id” => 3, “uname” => ‘user3′, “logtime” => ’2006-07-20 11:10:08′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 10:52:54′);
$userlog[] = array (“id” => 1, “uname” => ‘user1′, “logtime” => ’2006-07-20 08:16:04′);

 

  1. <?php 
  2. //第一题 
  3. $user=''
  4. $date='2006-07-20′; 
  5. foreach($userlog as $val
  6.     if(!isset($user[$val['id']])) 
  7.     { 
  8.         $user[$val['id']]['id']=$val['id']; 
  9.         $user[$val['id']]['uname']=$val['uname']; 
  10.         $user[$val['id']]['logcounts']=0; 
  11.     } 
  12.     if(strstr($val['logtime'],$date)) 
  13.     { 
  14.         $user[$val['id']]['logcounts']+=1; 
  15.     } 
  16. echo '<pre>'
  17. print_r($user); 
  18. echo '</pre>'
  19.  
  20.  
  21. //第二题 
  22. $users=”; 
  23. $start=strtotime('2006-07-20′); 
  24. $end =strtotime('2006-07-22′)+3600*24; 
  25. $time=”; 
  26. foreach($userlog as $val
  27.     if(!isset($users[$val['id']])) 
  28.     { 
  29.         $users[$val['id']]['id']=$val['id']; 
  30.         $users[$val['id']]['uname']=$val['uname']; 
  31.         $users[$val['id']]['days']=array(); 
  32.         $users[$val['id']]['logs']=0; 
  33.     } 
  34.     $time=strtotime($val['logtime']); 
  35.     if($time>=$start & $time<$end
  36.     { 
  37.         if(!in_array(substr($val['logtime'],0,10),$users[$val['id']]['days'])) 
  38.         { 
  39.             $users[$val['id']]['days'][]=substr($val['logtime'],0,10); 
  40.             $users[$val['id']]['logs']+=1; 
  41.         } 
  42.     } 
  43. echo '<pre>'
  44. print_r($users); 
  45. echo '</pre>'
  46. ?> 

 

阅读:

相关新闻:
评论