【ci框架】PHP常见面试题汇总。。。


分类: 【CodeIgniter深入研究】 31人阅读 评论(0) 收藏 举报

  1. /** 
  2.  * 第1题:用PHP打印出前一天的时间格式,如:"2015-01-21 14:42:09" 
  3.  */  
  4.   
  5. echo date("Y-m-d H:i:s",strtotime("-1 day"))."<br/>";  
  1. /** 
  2.  * 第2题:用PHP打印出上周的时间格式,如:"2015-01-15 14:42:09" 
  3.  */  
  4.   
  5. echo date("Y-m-d H:i:s",strtotime("-1 week"))."<br/>";  
  1. /** 
  2.  * 第3题:用PHP打印出上个月的时间格式,如:"2014-12-22 14:42:09" 
  3.  */  
  4.   
  5. echo date("Y-m-d H:i:s",strtotime("-1 month"))."<br/>";  
  1. /** 
  2.  * 第4题:简述一下echo、print、print_r 区别 
  3.  * print_r()主要用来输出数组的结构;echo 和 print 主要用来输出字符串,只不过echo 可同时输出多个字符串,print 只能输出一个字符串; 
  4.  * echo 和 print 区别: 
  5.         (1)使用命令方式来输出字符串,此时不需要小括号;看个人习惯,个人习惯使用命令方式来输出字符串 
  6.         (2)使用函数方式来输出字符串,echo无返回值,print有返回值,成功返回 1,失败返回 0 
  7.  */  
  8.   
  9. print_r(array("hello world"))."<br/>";  
  10.   
  11. echo (print "ddd")."<br/>";  
  1. /** 
  2.  * 第5题:如何实现字符串反转,如:"abcdefg" 反转成 "gfedcba";两种方式:(1)调用php自带的strrev()函数 (2)自定义函数 strrevv 
  3.  */  
  4.   
  5. echo strrev("abcdefg")."<br/>";  
  6.   
  7. $str = "abcdefg";  
  8. function strrevv($str){  
  9.     $len=strlen($str);  
  10.     $newstr = '';  
  11.     for($i=$len-1;$i>=0;$i--){  
  12.         $newstr .= $str{$i};  
  13.     }  
  14.     return $newstr;  
  15. }  
  16. $showstr = strrevv($str);  
  17. echo $showstr."<br>";  
  1. /** 
  2.  * 第6题:如何实现中文字符串截取无乱码的方法(mb_*系列函数),首先:需要开启 extension=php_mbstring.dll 扩展 ,结果:"你" 
  3.  */  
  4.   
  5. echo mb_substr("你好",0,1,"gb2312")."<br/>";  
  1. /** 
  2.  * 第7题:用PHP写出显示客户端和服务器端IP的代码 
  3.  */  
  4.   
  5. $_SERVER['REMOTE_ADDR'];  
  6. $_SERVER['SERVER_ADDR'];  
  1. /** 
  2.  * 第8题:mysql中 IFNULL 控制流函数;IFNULL() 
  3.  * IFNULL(): 
  4.  *      (1)它有两个参数,并且对第一个参数进行判断。 
  5.  *      (2)如果第一个参数不是NULL,函数就会向调用者返回第一个参数;如果是NULL,将返回第二个参数; 
  6.  * 例如: 
  7.  *      SELECT IFNULL(1,2), IFNULL(NULL,10), IFNULL(4*NULL,'false');//结果:"1 10  false" 
  8.  */  
  1. /** 
  2.  * 第9题:简述include与require的区别? 
  3.  * 相同点: 
  4.  *      (1)include与require都能把另外一个文件包含到当前文件中 
  5.  * 异同点: 
  6.  *      (1)使用include时,当包含的文件不存在时系统会报出警告级别的错误,但并不影响程序的后续执行. 
  7.  *      (2)使用require时,当包含的文件不存在时系统会先报出警告级别的错误,接着又报出一个致命性的错误,将终止程序的后续执行. 
  8.  *      (3)require只会解释包含的文件一次,不会再解释第二次,因而效率相对较高;而include则会重复的解释包含的文件 
  9.  *      (4)载入时机不同:require在运行前载入包含文件,include在运行时载入包含文件 
  10.  */  
  1. /** 
  2.  * 第10题:如何获取一个字符串中指定的字符? 
  3.  */  
  4.   
  5.  $str="abcdefg";  
  6.  echo $str{2}."<br/>";  

  1. /** 
  2.  * 第11题:如何批量替换字符串中的特定字符?如:"批量替换$content内容字符串中的所有双引号为单引号" 
  3.  */  
  4.   
  5. $content = str_replace($searchs=array("\""), $replaces=array("'"), $content);  

  1. /** 
  2.  * 第12题:如何将UEditor或FCkeditor编辑器中的内容转化为JSON串? 
  3.  * 
  4.  *  (1)第一种情况,内容中只有双引号的情况: 
  5.  *      $content='<img alt="" src="../image/20121025/20121025105514_1093.jpg" />'; 
  6.  *      // {"content":"<img alt=\"\" src=\"..\/image\/20121025\/20121025105514_1093.jpg\" \/>"} 
  7.  *      echo json_encode(array("content"=>$content)); 
  8.  *  (2)第二种情况,内容中只有单引号的情况: 
  9.  *      $content="<img alt='' src='../image/20121025/20121025105514_1093.jpg' />"; 
  10.  *      // {"content":"<img alt='' src='..\/image\/20121025\/20121025105514_1093.jpg' \/>"} 
  11.  *      echo json_encode(array("content"=>$content)); 
  12.  *  (3)第三种情况,内容中既有双引号,又有单引号的情况: 
  13.  *      $content=htmlspecialchars($content);//把一些预定义的字符转换为HTML实体 
  14.  *      $json_arr = json_encode(array("content"=>$content));//将数组json化为字符串 
  15.  *      $arr = json_decode($json_arr,true);//将json串反json化为数组 
  16.  *      $arr['content']=htmlspecialchars_decode($arr['content']);//把一些预定义的HTML实体转换为字符显示到网页中 
  17.  *       
  18.  */  

  1. /** 
  2.  * 第13题:addslashes()与 htmlspecialchars() 区别 
  3.  * 
  4.  * 区别: 
  5.  
  6.  *   (1)addslashes()函数主要在指定的预定义字符前添加反斜杠,这些预定义字符主要包括: 
  7.  * 
  8.  *      单引号 (') 
  9.  *      双引号 (") 
  10.  *      反斜杠 (\) 
  11.  *      NULL 
  12.  * 
  13.  *      addslashes()函数的主要作用是保证这些预定义字符能够正确入库,仅此而已 
  14.  * 
  15.  * 
  16.  * (2)htmlspecialchars()函数把一些预定义的字符转换为HTML实体,这些预定义字符主要包括: 
  17.  * 
  18.  *       
  19.  *      & (和号)      成为 &amp; 
  20.  *      " (双引号)     成为 &quot; 
  21.  *      ' (单引号)     成为 &#039; 
  22.  *      < (小于)       成为 &lt; 
  23.  *      > (大于)       成为 &gt; 
  24.  * 
  25.  *      echo htmlspecialchars($str, ENT_COMPAT);  //默认,仅编码双引号 
  26.  *      echo htmlspecialchars($str, ENT_QUOTES);  //编码双引号和单引号 
  27.  *      echo htmlspecialchars($str, ENT_NOQUOTES);//不编码任何引号 
  28.  * 
  29.  */  
  1. /** 
  2.  * 第14题:如何去除数组中重复的值?使用数组函数 array_unique() 可以做到 
  3.  * 案例结果: 
  4.  *     Array( 
  5.  *          [0] => 8535455928182811 
  6.  *          [1] => 1558999140182811 
  7.  *          [3] => 5795844841182811 
  8.  *     ) 
  9.  */  
  10.   
  11.  $arr=array(  
  12.       "8535455928182811",  
  13.       "1558999140182811",  
  14.       "1558999140182811",  
  15.       "5795844841182811",  
  16.       "5795844841182811",  
  17.  );  
  18.   
  19.  $ordersn_arr=array_unique($arr);  
  20.  echo "<pre>";print_r($ordersn_arr);exit;  
  1. /* 
  2. * 第15题:说一说自己对$GLOBALS全局变量和global关键字的理解?   
  3. * 
  4. * (1)、输出$GLOBALS全局变量: 
  5.  
  6. *    echo "<pre>";print_r($GLOBALS); 
  7.  
  8. *    结果: 
  9. *    Array 
  10. *       ( 
  11. *           [GLOBALS] => Array 
  12. *              *RECURSION* 
  13. *           [_POST] => Array 
  14. *               ( 
  15. *                  [username] => admin     //等价于$_POST['username'] 
  16. *                  [password] => 123       //等价于$_POST['password'] 
  17. *               ) 
  18. *           [_GET] => Array 
  19. *               ( 
  20. *                  [username] => admin     //等价于$_GET['username'] 
  21. *                  [password] => 123       //等价于$_GET['password'] 
  22. *               ) 
  23. *           [_COOKIE] => Array 
  24. *               ( 
  25. *                   [PHPSESSID] => movgbv4t1klb9fsbcd7ns8ik73 
  26. *                   [username] => admin     //等价于$_COOKIE['username'] 
  27. *                   [password] => 123       //等价于$_COOKIE['password'] 
  28. *               ) 
  29. *           [_FILES] => Array 
  30. *               ( 
  31. *                  [name] => 1.txt         //等价于$_FILES['username'] 
  32. *                  [type] => image/jpeg    //等价于$_FILES['password'] 
  33. *               ) 
  34. *           [_SESSION] => Array 
  35. *               ( 
  36. *                  [username] => admin     //等价于$_SESSION['username'] 
  37. *                  [password] => 123       //等价于$_SESSION['password'] 
  38. *               ) 
  39. *           [pwd] => 134121233             //等价于$pwd 
  40. *           [username] => xiaoqiang        //等价于$username 
  41. *           [password] => 123              //等价于$password 
  42. *       ) 
  43.  
  44. * (2)、几种等价的写法: 
  45. *   
  46. *    (1)$_SESSION['username']等价于$GLOBALS['_SESSION']['username'] 
  47. *    (2)$_COOKIE['username']等价于$GLOBALS['_COOKIE']['username'] 
  48. *    (3)$_GET['username']等价于$GLOBALS['_GET']['username'] 
  49. *    (4)$_POST['username']等价于$GLOBALS['_POST']['username'] 
  50. *    (5)$_FILES['username']等价于$GLOBALS['_FILES']['username'] 
  51. *    (6)$username等价于$GLOBALS['username'] 
  52.  
  53. * (3)、global关键字: 
  54.  
  55. *    php中全局变量在函数体内使用时必须声明为global;在函数体内通过global关键字声明的变量自动变为函数体外的全局变量 
  56. * 
  57. *    案例1: 
  58. * 
  59. *    function test(){ 
  60. *       global $username;//声明全局变量时不能赋值 
  61. *       $username="小强";//此时可以给全局变量赋值 
  62. *    } 
  63. *    test(); 
  64. *    echo "<pre>";print_r($GLOBALS);exit;//结果:"小强" 
  65. * 
  66. *    案例2: 
  67. * 
  68. *    $username="小强"; 
  69. *    function test(){ 
  70. *       global $username;//声明全局变量时不能赋值(提示:使用global关键字引用函数体外的$username变量) 
  71. *       $username="小红";//此时可以给全局变量赋值(提示:将函数体外$username变量重新赋值) 
  72. *    } 
  73. *    test(); 
  74. *    echo "<pre>";print_r($GLOBALS);exit;//结果:"小红" 
  75.  
  76. * (4)、全局变量的生效范围: 
  77.  
  78. *    $a = 1;include 'b.inc';//这里变量$a将会在包含文件b.inc中生效 
  79.  
  80. * (5)、global声明的变量为全局变量,在函数和类的外部照样可以使用 
  81.  
  82. *    如:discuz_application.php类中使用global关键字声明的$_G全局变量,在全站都可以使用 
  83. */  
  1. /** 
  2.  * 第16题:回调函数 call_user_func() 如何使用? 
  3.  * 格式一: 
  4.  *    call_user_func("自定义函数","传递给自定义函数的参数1","传递给自定义函数的参数2","传递给自定义函数的参数3","传递给自定义函数的参数N....");//返回结果为自定义函数的返回结果 
  5.  * 格式二: 
  6.  *    call_user_func(array("类名","方法名"),"传递给类中方法的参数1","传递给类中方法的参数2","传递给类中方法的参数3","传递给类中方法的参数N....");//返回结果为类中方法的返回结果 
  7.  * 格式三: 
  8.  *    call_user_func_array("自定义函数",array("传递给类中方法的参数1","传递给类中方法的参数2","传递给类中方法的参数3","传递给类中方法的参数N...."));//传递给函数的参数统一放到数组中 
  9.  * 格式四: 
  10.  *    call_user_func_array(array("类名","方法名"),array("传递给类中方法的参数1","传递给类中方法的参数2","传递给类中方法的参数3","传递给类中方法的参数N...."));//传递给方法的参数统一放到数组中 
  11.  */  
  12. function uc_feed_add($icon$uid$username$title_template=''$title_data=''$body_template=''$body_data=''$body_general=''$target_ids=''$images = array()) {  
  13.          //UC_API_FUNC值为:'uc_api_mysql'或'uc_api_post';  
  14.          //调用自定义函数'uc_api_mysql'或'uc_api_post'  
  15.          //返回结果为自定义函数的返回结果  
  16.          return call_user_func(UC_API_FUNC, 'feed''add',  
  17.                  array(  'icon'=>$icon,  
  18.                          'appid'=>UC_APPID,  
  19.                          'uid'=>$uid,//用户ID  
  20.                          'username'=>$username,  
  21.                          'title_template'=>$title_template,  
  22.                          'title_data'=>$title_data,  
  23.                          'body_template'=>$body_template,  
  24.                          'body_data'=>$body_data,  
  25.                          'body_general'=>$body_general,  
  26.                          'target_ids'=>$target_ids,  
  27.                          'image_1'=>$images[0]['url'],  
  28.                          'image_1_link'=>$images[0]['link'],  
  29.                          'image_2'=>$images[1]['url'],  
  30.                          'image_2_link'=>$images[1]['link'],  
  31.                          'image_3'=>$images[2]['url'],  
  32.                          'image_3_link'=>$images[2]['link'],  
  33.                          'image_4'=>$images[3]['url'],  
  34.                          'image_4_link'=>$images[3]['link']  
  35.                  )  
  36.          );  
  37.  }  
  1. //第17题:如何使用 array_multisort() 函数实现对多维数组进行排序?  
  2. //模拟从数据库中查询出来的记录(提示:二维数组)  
  3. $arr[] = array("age"=>20,"name"=>"小强");  
  4. $arr[] = array("age"=>21,"name"=>"李伟");  
  5. $arr[] = array("age"=>20,"name"=>"小亮");  
  6. $arr[] = array("age"=>22,"name"=>"黎明");  
  7.    
  8. foreach ($arr as $key=>$value){  
  9.     $age[$key]  = $value['age']; //排序字段 "age"  
  10.     $name[$key] = $value['name'];//排序字段 "name"  
  11. }  
  12.   
  13. /** 
  14.  * 1、对 $arr 数组进行排序 
  15.  *    首先按照年龄从大到小的顺序排列,如果年龄相同再按照名字的顺序排序,类似于sql中的order by 
  16.  * 2、注意事项: 
  17.  *    (1)$age和$name  等价于 数据表的"age"和"name"列字段,类似于 "order by age desc,name asc"  
  18.  *    (2)排序顺序标志: 
  19.  *          SORT_ASC - 按照上升顺序排序 
  20.  *          SORT_DESC - 按照下降顺序排序 
  21.  *    (3)排序类型标志: 
  22.  *          SORT_REGULAR - 将项目按照通常方法比较 
  23.  *          SORT_NUMERIC - 将项目按照数值比较 
  24.  *          SORT_STRING  - 将项目按照字符串比较 
  25.  *    (4)排序标志的默认值为: SORT_ASC 和 SORT_REGULAR 
  26.  *    (5)每个一维数组后指定的排序标志仅仅对该一维数组有效,一个一维数组不能指定两个同类的排序标志 
  27.  *    (6)该函数会改变数字索引,其它索引不改变 
  28.  * 
  29.  */  
  30. array_multisort($age,SORT_NUMERIC,SORT_DESC,$name,SORT_STRING,SORT_ASC,$arr);  
  31. echo "<pre>";print_r($arr);exit;  
  32. /** 
  33.  * 结果: 等价于 "select * from user order by age desc,name asc"; 
  34.  * Array( 
  35.  *   [0] => Array 
  36.  *       ( 
  37.  *           [age] => 22 
  38.  *           [name] => 黎明 
  39.  *       ) 
  40.  *   [1] => Array 
  41.  *       ( 
  42.  *           [age] => 21 
  43.  *           [name] => 李伟 
  44.  *       ) 
  45.  *   [2] => Array 
  46.  *       ( 
  47.  *           [age] => 20 
  48.  *           [name] => 小亮 
  49.  *       ) 
  50.  *   [3] => Array 
  51.  *       ( 
  52.  *           [age] => 20 
  53.  *           [name] => 小强 
  54.  *       ) 
  55.  * ) 
  56.  */  
  1. //第18题:移除数组中元素中的几种方式?  
  2. //案例一:  
  3. $arr1 = array('1','2','3','4');  
  4. //提示:虽然删除了元素,但是没有重建数组索引  
  5. unset($arr1[2]);  
  6. echo "<pre>";print_r($arr1);  
  7. /** 
  8.  *  使用unset()函数处理后的结果: 
  9.  *  Array( 
  10.  *      [0] => 1 
  11.  *      [1] => 2 
  12.  *      [3] => 4 
  13.  *  ) 
  14.  */  
  15.   
  16. //案例二:  
  17. $arr2 = array('1','2','3','4');  
  18. //提示:删除了元素,并且重建了数组索引  
  19. array_splice($arr2, 2, 1);//参数2-开始位置 参数3-删除元素数量  
  20. echo "<pre>";print_r($arr2);  
  21. /** 
  22.  *  使用array_splice()函数处理后的结果: 
  23.  *  Array( 
  24.  *      [0] => 1 
  25.  *      [1] => 2 
  26.  *      [2] => 4 
  27.  *  ) 
  28.  */  
  29.   
  30. //案例三:  
  31. $arr3 = array('1','2','3','4');  
  32. //提示:删除了元素,被移除的元素由参数4来替代  
  33. array_splice($arr3, 2, 1,array("5"));//参数1-原数组 参数2-开始位置 参数3-删除元素数量 参数4-替换被移除元素的数组  
  34. echo "<pre>";print_r($arr3);  
  35. /** 
  36.  *  使用array_splice()函数处理后的结果: 
  37.  *  Array( 
  38.  *      [0] => 1 
  39.  *      [1] => 2 
  40.  *      [2] => 5 
  41.  *      [3] => 4 
  42.  *  ) 
  43.  */  
  44.   
  45. //案例四:  
  46. $arr4 = array('1','2','3','4');  
  47. //提示:从数组中截取一段元素并返回(返回的数组索引被重建)  
  48. $arr5 = array_slice($arr4, 2, 1);//参数2-开始位置 参数3-删除元素数量  
  49. echo "<pre>";print_r($arr5);  
  50. /** 
  51.  *  使用array_slice()函数处理后的结果: 
  52.  *  Array( 
  53.  *      [0] => 3 
  54.  *  ) 
  55.  */  
posted @ 2015-01-23 19:52  SunsCheung  阅读(386)  评论(0编辑  收藏  举报