zoukankan      html  css  js  c++  java
  • PHP面试题

    echo 、print、print_r、var_dump区别

    • echo 和print是语言结构不是函数, 只能打印出string 和 int
    • int print(string $arg])         既然是语言结果,一次打印就没有必要加括号(print)
    • print_r       只有两个参数,第二个参数用于判断是否要输出(TRUE 捕获),能打印出结构 ,且有返回值,记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
    • var_dump           没有返回值,能打印出结构

    strtotime(),函数的运用

    echo date("Y-m-d H:i:s",strtotime("now")), "
    ";
    echo date("Y-m-d H:i:s",strtotime("10 September 2000")), "
    ";
    echo date("Y-m-d H:i:s",strtotime("+1 day")), "
    ";
    echo date("Y-m-d H:i:s",strtotime("+1 week")), "
    ";
    echo date("Y-m-d H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds")), "
    ";
    echo date("Y-m-d H:i:s",strtotime("next Thursday")), "
    ";
    echo date("Y-m-d H:i:s",strtotime("last Monday")), "
    ";

    使用哪些工具进行版本控制

    svn,git,cvs

    实现字符串翻转

    $str = "wwweeerr";
    $len = strlen($str);
    $rev_str = '';
    for ($i = $len; $i >= 0; $i--) {
        $rev_str .= $str[$i];
    }
    echo strrev($str), "<br>";
    echo $rev_str;
    
    
    $str_c = "你好";
    $len_c = mb_strlen($str_c,'GB2312');
    $rev_c = '';
    for ($i = $len_c; $i >= 0; $i--) {
        $rev_c .= mb_substr($str_c,$i,1,"GB2312")
    );
    }
    echo  $rev_c;

    设置session得生存周期 :session_set_cookie_params

    require  require_once   include ,include_once 区别

    include产生一个warning,而require产生直接产生错误中断

    require 、include在运行前载入

    require_once  、include_once 如果文件被包含,那么就不会包含文件

    效率方面

    include_once(),require_once(),与include(),require()比较,效率要低一些,因为他们至少得先判断一下这个文件是否已包含。这一问题在PHP5版本有很大改进,不过效率还是有差别。

    require和include之间有两点重要的区别。首先,无论require的位置如何,制定文件都将包含到出现require的脚本中。例如,即使require放在计算结果为假的if语句中,依然会包含指定文件。而include可以放在条件语句中。

     

    在PHP中,heredoc是一种特殊的字符串,它的结束标志必须与开始得标志相同

    $dd = <<<dd
    
    dd;

    MVC认识

    M:model(模型),与数据打交道(数据库)

    V:view(视图) 展示数据

    C:controller(控制器)  处理业务逻辑,即是传输数据

    PHP中传值与传引用的区别。什么时候传值,什么时候传引用

    引用传值 : 用&,在函数范围改变引用传值的值,会引起外面值得改变

    传值:相当于复制,在函数范围内对传值的改变,不会引起外面值得变化

    优缺点:  如果是大型的字符串和对象进行传值,会消耗很多内存,影响性能,因此此操作慎重;如果是引用传值,则是传递一个地址,对性能没有影响。

    在PHP中error_reporting这个函数有什么作用:报告错误级别。

    邮箱正则匹配:/([a-zd]+[._-])@([a-Z.d_-]+).([a-z]+)  

    如何得到当前执行脚本路径,包括所得到参数:

    __FILE__   获取路径

    $argc --获取参数数量

    $argv --获取参数列表

    foo()和@foo()之间有什么区别: @代表忽略warning

    PHP中权限控制修饰符:public private  protected

    取得查询结果集总数的函数是:mysql_num_row()

    $arr = array('james', 'tom', 'symfony'); 请打印出第一个元素的值

    $arr = array('james', 'tom', 'symfony');
    print_r($arr[0]);
    //并不移动指针。
    print_r(current($arr));
    ///会移动指针
    print_r(array_shift($arr));

    写一个函数,尽可能高效的,从一个标准 url 里取出文件的扩展名

    例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

    $url = "http://www.sina.com.cn/abc/de/fg.php?id=1";
    $pathinfo = pathinfo($url);
    var_dump($pathinfo);
    $url_array = explode('?',$pathinfo['extension']);
    echo $url_array[0]."<br>"; //php
    
    $parse_url =parse_url($url);
    echo substr(basename($parse_url['path']), strrpos(basename($parse_url['path']), '.'));//.php
    //正则匹配  w 是[0-9a-zA-Z_] 包含字母、数字和下划线
    $result = preg_match("/[w-]+(.php)[w-=?]+/",$url,$matched);
    
    echo  $matched[1];
    //也可以直接匹配
    $result_again = preg_match("/[w/-]+(.php)[w/-=?]+/",$url,$matched);
    echo  $matched[1];

    计算相对路劲

    //计算相对路劲 b线对于a
    $a = '/a/b/c/q/d/e.php';
    $b = '/a/b/12/34/c.php';
    $array_a = explode('/', $a);
    $array_b = explode('/', $b);
    $len_b = count($array_b);
    
    for ($i = 0; $i < $len_b; $i++) {
        if($array_b[$i] !=$array_a[$i]){
            $dismatchlen = count($array_a)-$i;
            $rel_path = array_slice($array_b,$i);
            break;
        }
    }
    $relative_path =  str_repeat('../',$dismatchlen).implode('/',$rel_path);
    echo  $relative_path;

    遍历一个文件夹下的所有文件和子文件夹。

    //遍历一个文件夹下的所有文件和子文件夹
    $path = dirname(__FILE__);
    
    function each_dir($path)
    {
        //在遍历之前最好做安全检查
        if (is_dir($path)) {
            //打开目录句柄
            $re = opendir($path);
            //从目录句柄中读取条目
            while (($file = readdir($re)) !== false) {
    
                if ($file == '.' || $file == "..") {
                    echo $file . "<br/>";
                    //进行下一次循环
                    continue;
                }
                $r_path = $path . '/' . $file;
                //如果是文件输出
                if (is_file($r_path)) {
                    echo $r_path . "<br/>";
                    continue;
                }
                //递归调用
                if (is_dir($r_path)) {
                    each_file($r_path);
                }
            }
            //关闭资源
            closedir($re);
        }
    }
    each_dir($path);
  • 相关阅读:
    Mysql定时器定时删除表数据
    Mysql中文排序规则
    Swoole学习-Swoole入门指南
    Cygwin安装swoole及错误解决
    php://input ,$_POST, $_GET和$HTTP_RAW_POST_DATA
    tp5-微信消息接收和处理
    [软件工程] 千帆竞发图的制作
    [构建之法论坛] 助教之路
    VS社区版 使用 OpenCover 获取测试代码覆盖率
    支持多编程语言的自动测试系统
  • 原文地址:https://www.cnblogs.com/webph/p/6616706.html
Copyright © 2011-2022 走看看