• 【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.  */  
  • 相关阅读:
    Ext Form
    Ext中 get、getDom、getCmp的区别
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider())
    Ext BoxComponent
    Ext表单提示方式:msgTarget
    Ext.QuickTips.init()的使用
    Ext.Ajax.Request
    FitLayout
    视图Ext.Viewport和窗口Ext.Window用法
    禁用IE缓存
  • 原文地址:https://www.cnblogs.com/sunscheung/p/4839400.html
Copyright © 2020-2023  润新知