• PHP面试题整理


    PHP的意思:
        php是一个基于服务端来创建动态网站的脚本语言,可以用php和HTML
        生成网站主页
    什么是面向对象?主要特征是什么?
        面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加
    清晰 主要特征:封装。继承、多态
     
    session 和 cookie的区别是什么,请从协议,产生的原因与作用说明?    参考链接:https://www.cnblogs.com/andy-zhou/p/5360107.html
        1.http 无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求
    不同的页面不能看做是同一个用户
        2.session存储在服务器端,cookie 保存在客户端,session 比较安全,cookie用
    某些手段可以修改,不安全,session依赖于cookie进行传递。禁用cookie后,session不能正常
    视同。
        session的缺点: 保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。session
    保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置的文件的session.save
    path指定。session文件是公有的
     
    不使用cookie向客户端发送一个cookie
        理解:session start( )开启时,生成一个常量SID,当cookie开启时,这个常量为空,当COOKIE
    关闭时,这个常量中存储了PHP sessid的值。通过在url后加一个SID参数来传递SESSIONID的值
    从而使客户端页面可以使用session里面的值,当客户端开启cookie和服务端开启session时,浏览器
    第一次请求,服务器会向浏览器发送一个cookie 里面存储sessionID,当浏览器二次请求时,会把已经
    存在的cookie一起提交到服务器端。
     
    简述Cookie的设置及获取过程
        设置COOKIE的值:
                                Setcookie(名称,值,保存时间,有效域)
         获取值:
        $_COOKIE['名称']
     
    HTTP状态中302、403、500、200、404、502代码含义
     
        一二三四五原则:一。消息系列
                                   二。成功系列
                                   三。重定向系列
                                    四。请求错误系列
                                    五。服务器端错误系列
        403:禁止访问
        500:服务器内部错误
        401:代表未授权
        200:请求成功
        404:文件未找到
        502:服务器内部错误
     
    请写出数据类型(int char varchar datetime text)的意思;请问varchar 和 char有什么区别
     
    int 整数
    char 定长字符
    varchar 变长字符
    Datetime 日期时间类型
    Text 文本型
    varchar 和 char 的区别
     
    char是固定长度的字符类型,分配多少空间,就占用多少空间
    varchar 是可变长度的字符类型,内容有多少就占多大的空间,能有效节省空间
    varchar 是变长,节省存储空间,char是固定长度
    查找效率是char型快,因为varchar是非定长,必须先查找长度,然后进行数据的提取,比char定长
    类型多了一个步骤
     
     
    MyISAM 和InooDB 的基本区别?索引结构如何实现?
     
    MyISAM 类型不支持事务处理等高级处理,而InnoDB类型支持,
    MyISAM 类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务
    支持
    而InnoDB提供事务支持以及外部键等高级数据库功能
     
    创建索引:alert table tablename add index (`字段名`)
     
    isset() 和 empty()区别
     
        Isset 判断变量是否存在,如果存在则返回真,empty 判断变量是否为空为假
    如果为空为假则返回真
     
    include 与 require的区别      参考链接: https://blog.csdn.net/qiu1988yang/article/details/77709520
     
        1.include() 在执行文件时 每次都要进行读取和评估,require() 文件只处理一次
        2.require()通常放在php脚本程序的最前面
        3.require()在程序解释执行前被加载 include()则在解释执行过程中 include() 的使用和require()一样,一般放在流程控制的处理区段中,php脚本
    文件读到include()语句时,才将它包含的文件读进来,这种方式可以把程序执行的流程简化
        4.include_once() 和require_once() 语句也是在脚本执行期间包括并运行文件
    与include()和 require() 的唯一区别是文件中的代码已经被包括了,则不会再次
    被包括
    唯一的差别在于 include_once() 函数会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入该档案(这项功能有时候是很重要的,比方说要导入的档案里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个档案,在第二次导入的时候便会发生错误讯息,因为 PHP 不允许相同名称的函数被重复宣告第二次)
    1.     require ()包含文件失败,停止执行,给出错误
    2. include()即使加载出错,整个程序还是继续执行
      一个页面声明,另一个页面调用
      包含文件失败,继续向下执行,返回一条警告
     
    PHP字符串中单引号与双引号的区别?
     
    单引号不能解释变量,双引号可以解释变量
    单引号不能转义字符,在双引号中可以转义字符
     
    请说明PHP中传值与传引用的区别。什么时候传值什么时候传引用
     
        按值传递:函数范围内对值得任何改变在函数外部都会被忽略
        按引用传递:函数范围内对值得任何改变在函数外部也能反映出这些修改
     
    优缺点:按值传递时,php必须复制值,特别是对大型字符串和对象来说,这将会是
    一个代价很大的操作  按引用传递则不需要复制值,对于性能提高有好处
     
     
    面向对象中接口和抽象类的区别及应用场景
     
    1.有抽象方法的类叫做抽象类,抽象类中不一定有抽象方法,抽象方法必须使用abstract关键字定义
    2.接口中全部都是抽象方法,方法不用使用abstract定义
    3.当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口
     
    echo() print() print_r() 的区别
     
    echo 是php 语句,print 和print_r 是函数,语句没有返回值,函数可以有返回值(即时没有用)
    print()只能打印出简单类型变量的值(如 int string)
    print_r()可以打印出复杂类型变量的值(如数组,对象)
    echo 输出一个或多个字符串
     
    mysql fetch row() 和 mysql fetch array 之间有什么区别?
     
     
    mysql_fetch_row() 以索引数组的方式取查询的结果集 
    mysql_frtch_array() 以索引数组和关联数组两种方式取查询的结果集
     
    请描述出两点以上XHTML 和HTML 最显著的区别  
     
    (1)XHTML 必须强制指定文档类型DocType HTML 不需要
    (2)XHTML 所有标签必须闭合,HTML比较随意
     
    HTTP协议中GET POST 和 HEAD 的区别
     
    HEAD: 只请求页面的首部
    GET: 
    POST:
    (1)HTTP定义了与服务器交互的不同方法,最基本的是GET 和POST. 事实上GET适用于多数请求,而保留POST仅用于更新站点
    (2)在FROM 提交的时候,如果不指定Method,则默认为GET请求,From 中提交的数据将会附加在url之后
    以?分开。字母数字字符原样发送,但空格转换为 + 号 其他符号转换为%XX 其中XX为该符号以16进制标识的ASCII值。 
    GET 请求提交的数据放置在HTTP请求协议头中,
    而POST提交的数据则放在实体数据中
    GET 方式提交的数据最多只能有1024字节,而POST没有此限制
    (3) GET 这个是 浏览器用语向服务器请求最常用的方法。POST这个方法也是用来传送数据的,但是与
    GET 不同的是,使用POST的时候,数据不是附在URL后面传递,而是要作为独立的行来传递 ,此时还必须要发送一个Content Length 标题 以标明数据长度,随后一个空白行,然后就是实际传送的数据,网页的表单通常是用POST来传送的
     
     
    表单中get 与 post 提交方法的区别?
     
    1.get是吧参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应
    在URL中可以看到
        post 是通过HTTP post 机制,将表单内各个字段与其内容放置在HTML HEADER 内一起传送到ACTION属性
    所指的URL地址。用户看不到这一过程
    2.对于get 方式,服务器端用Request.QueryString 获取变量的值,对于post方式,服务器用Request.From 获取提交的数据
    3.get 传送的数据量较小,不能大于2kb,post 传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5 中为100KB
     
    foo() 和 @foo()之间有什么区别 
    @foo()控制错误输出  
     
     
    线性表和顺序表的区别?
     
    1.线性表包括顺序表和链表
    2.顺序表中的元素的地址是连续的,链表里面节点的地址不是连续的,是通过指针连起来的
     
    什么是数据库索引,主键索引,唯一索引的区别,索引的缺点是什么?
    索引用来快速地寻找那些具有特定值得记录。
    主键索引和唯一索引的区别:
                    主键是一种唯一性索引,但它必须指定位“PRIMARY KEY”每个表只能有一个主键
                    唯一索引引列的所有值都只能出现一次,即必须唯一
    索引的缺点:
                    1.创建索引和维护索引要耗费时间,这种时间随着数量的增加和增加
                    2.索引需要占物理空间, 除了数据表占数据空间之外,每一个索引还要占一定的物理空间
                    如果要建立聚簇索引,需要的空间就会更大
                    3.当对表中的数据进行增加。删除、修改的时候。索引也要动态的维护,这样就降低了数据的维护速度
     
    浏览器IE 和非IE浏览器的划分,区别是什么?
     
    IE浏览器值得是使用IE内核的浏览器,对一些W3C标准的网页代码支持不是很好
    非IE浏览器指的是没有使用IE内核的浏览器,对W3C标准的网页代码有很好的支持
     
    数据库中的事务是什么?
        事务(transaction)是作为一个单元的一组有序数据库操作。如果组中的所有操作都成功
    则认为事务成功,即时只有一个操作失败,事务也不成功。如果所有操作完成,则事务提交,其
    修改将作用于其他数据库进程,如果一个操作失败,则事务将回滚,该事务所有操作影响都将取消
     
    解释:左链接,右链接,内链接,索引
     
    1.内连接仅选出两张表中互相匹配的记录,因此,这会导致有时我们需要的的记录没有包含进来
        内部链接是两个表中都必须要有链接字段的对应值的记录,数据才能检索出来
    2.左链接和右链接都是外部连接,也就是区别于内部 连接,它对不满足条件的行并不是像内部连接一样将
        数据完全过滤掉,而是保留一部分数据,行数不会减少
    3.左连接是只要左边表中有记录,数据就能检索出来,而右边有的记录必要再左边表中有的记录才能被检索
    出来
    4.右连接是只要右边表中有记录,数据就能检索出来
    5、全连接则会返回两个表中的所有记录
     
    简述 xx中无限分类的实现原理
    https://blog.csdn.net/fwkjdaghappy1/article/details/7645313
    1.数据库分类表的设计: id字段 、父id字段、类名称字段、path字段
    2.path字段存当前分类的路径,格式:0,分类id,本身id
    3.查询分类:select * from 分类表 order by path asc;
    4.这样就查出来每个分类及其对应的子类。
     
     
     
    写出三种以上MySQL数据库存储引擎的名称
    MyISAM  InnoDB  BDB  Merge Memory Example Federated Archive CSV Blackhole MaxDB
     
     
    什么是模板技术、能够使HTML和PHP分离开使用的模板?
     
    模板技术就是使程序的逻辑代码和界面分开的技术
    能够使HTML 和PHP分开
     
    实现中文字符串截取无乱码的方法 
     
    Mb_substr() 
     
    数据库索引有基类,分别是什么?什么时候该用索引?
     
    普通索引,主键索引,唯一索引
    并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中
    的数据时才需要在表上创建索引
     
    写几个魔术方法并说明作用?
    __call() 当调用不存在的方法时会自动调用的方法
    __autoload() 在实例化一个尚未被定义的类时会自动调用其方法来加载类文件
    __set() 当给未定义的变量赋值时会自动调用的方法
    __get()当获取未定义变量值时会自动调用的方法
    __construct()构造方法,实例化类时自动调用的方法
    __unset() 当对一个未定义变量调用unset()时自动调用的方法
    __isset() 当对一个未定义变量调用issset()方法时自动调用的方法
    __clone()克隆一个对象
    __tostring()当输出一个对象时自动调用的方法
     
    $request、$post $get  $cookie $session $file 的意思是什么?
     
    它们都是php预定义变量
     
    $_request 用来获取post 或 get 方式提交的值
    $_post 用来获取post 方式提交的值
    $_get 用来获取get方式提交的值
    $_cookie 用来获取cookie存储的值
    $_session 用来获取session存储的值
    $_file 用来获取上传文件表单的值
     
    数组中下表最好是什么类型,为什么
     
    数组的下标最好是数字类型,数字类型的处理速度快
     
    ++i 和 i++哪个效率高,为什么
    ++i 效率比 i++效率高,因为++i少了一个返回i 的过程
     
    magic quotes gpc()  /  magic quotes runtime() 的意思是什么
     
    magic quotes gpc() 是 php配置文件中的,如果设置为on 则会自动POST
    GET COOKIE 中的字符串进行转义 ,在‘之前加
     
    magic_quotes_runtime() 是php中的函数,如果参数为TURE则会数据库中
    提取出来的单引号,双引号,反斜线自动加上反斜杠进行转义
     
    框架中什么是单一入口和多入口,单一入口的优缺点?
     
    1.多入口就是通过访问不同的文件来完成用户请求
    单一入口只web程序所有的请求都指向一个脚本文件的
     
    2.单一入口更容易控制权限,方便对HTTP请求 可以进行安全性检查
     
    缺点:url看起来不那么美观,特别是对搜索引擎来说不友好
     
     
    你对Memcache的理解,优点有哪些 
     
    Memcache 是一种缓存技术,在一定的时间内将动态网页解析之后保存到文件,
    下次访问时动态网页就直接调用这个文件,而不必再重新访问数据库。
    使用memcached做缓存的好处是: 提高网站访问速度,减轻高并发时服务器的压力
     
    优点:稳定,配置简单,多机分布式存储,速度快
     
    web应用中,数据库的读取频率远高于写入频率,如何优化MySQL而应对这种情景
     
    使用memcached 缓存技术,将动态数据缓存到文件,访问动态页面时直接
    调用缓存文件,而不必重新访问数据库,这样就减少了查询数据库的次数
     
    如果网站的访问量很大,可以吧数据库读写服务器分开,使用多态服务器去处理数据库
    查询,使用较少的服务器去处理数据库的写入和修改
     
    数据库设计时,常遇到的性能瓶颈有哪些,常有的解决方案?
     
    瓶颈主要有:
    1.磁盘搜索优化的方法是:将数据分布在多个磁盘上
    2.磁盘读/写 优化的方法是:从多个磁盘并行读写
    3.cpu 周期优化方法:扩展内存
    4.内存宽带
     
    请举例说明在你的开发过程中用什么方法来加快页面的加载速度
     
        要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态
    图片等大文件单独服务器,使用代码优化工具
     
    描述一下大流量高并发量网站的解决方案
     
        1.确认服务器硬件是否足够支持当前的流量
        2.使用memcache 缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必再访问数据库
        3、禁止外部的盗链
        4.外部网站的图片或者文件盗链往往会带来大量负载压力,因此应该严格限制外部对自身图片或者文件盗链,
    目前可以简单通过refer 来控制盗链,apache自己就可以通过配置来禁止盗链
        5.控制大文件的下载 大文件的下载会占用很大的流量,对于非SCSI硬盘来说会消耗,使得网站响应能力下降
        6.使用不同的主机分流主要流量,使服务器均衡负载
        7.使用流量统计软件 在网站上安装一个流量统计软件,可以即时知道哪些地方耗费了大量流量
    哪些页面需要进行优化
        8.分库分表
        9.Sphinx全文搜索引擎
     
    如何设计或配置Mysql 才能达到高效使用的目的
     
    1.数据库设计方面,设计结构良好的数据库,运行部分数据冗余
        选取最适用的字段属性,尽可能把字段设置为NOT NULL 这样在查询的时候,数据库
    不用去比较NULL值
    2.系统架构设计方面,表散列,把海量数据散列到几个不同表里面,集群,数据库查询和写入分开
    写高效sql语句,适用链接(join)来代替子查询
    使用联合(union)来代替手动创建的临时表
    所得皆必须,只从数据库取必须的数据
    必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度
    使用事务
    使用外健,使用索引
     
    设定网站的用户数量在千万级,但是活跃用户的数量只有1%,如何通过优化数据库提高活跃用户的访问速度
     
    我们可以根据用户的活跃程度,把活跃的用户提取出来放到另外一张表里面,每次活跃的用户登录
    的时候就直接到活跃用户表中进行查询,这样就提高了数据库查询速度
     
    了解XSS攻击吗 如何防止
     
    XSS是跨站脚本攻击,首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,
    然后利用不安全的Acticex控件执行恶意的行为
    使用htmlspecialchars()函数对提交的内容进行过滤,使字符串里面的特殊符号实体化
     
    SQL注入漏洞产生的原因,如何防止
    SQL注入产生的原因:程序开发过程中不注意规范书写sql 语句和对特殊字符进行过滤,导致
    客户端可以通过全局变量POST 和GET提交一些SQL语句正常执行
     
     
    防止SQL注入
    1.开启配置文件中的magic_quotes_gpc 和 magic_quotes_runtime 设置
    magic_quotes_gpc 开启后将自动把用户提交的sql语句的查询进行转换 把'转换为  对sql注入有有重大作用
    2.执行sql语句时使用addslashes进行sql 语句转换
    3.sql语句书写尽量不要省略小引号和单引号
    4.过滤掉sql语句中的一些关键字
    5.提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特定命名,取不易被猜到的
    6.php配置文件中设置register_globals 为OFF 关闭全局变量注册
    7.控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中
     
     
    PHP加速模式/扩展? 调试工具
     
    Zend Optimizer 加速扩展
    调试工具: xdebug
     
    常用MYSql命令
    show databases
    show tables
    Insert into xx values()
    update xx set 字段 = xx where
    delete from xx where
    select  * from xx where xx order by  desc/asc limit ..
    group by ,, having ...
     
    进入mysql 管理命令行的命令
     
    Mysql -uroot -p 
     
    显示系统变量和值
    show variables
     
    请写出 5个常用的unix操作命令
     
    1. ls -l 以长格式的形式查看当前目录下所有可见文件的详细属性
    2. tar zxvf   xxx.tgz -c 指定目录       解压到指定目录
    3. tar czvf    xxx.tgz  指定目录          压缩到指定目录
    4. Cat     一次显示整个文件  从键盘创建一个文件   合并为一个文件
    5. mkdir   创建目录
    6. rm   删除
     
    请写出以下5个UNIX系统配置文件/服务的作用
     
    /etc/passwd :    用户信息文件,其中包含用户名,用户是否有密码,用户ID及用户所属组
    /etc/hosts  :主机数据库,包括IP地址,主机名 或域名 别名等信息,在此文件中添加记录可绕过dns
    /etc/fstab :保存了系统所有分区信息的配置文件
    crontab 计划任务命令
    Sshd 远程连接管理命令

    请写出5个常用的SQL操作关键字
     
    select update delete insert into create  group by order by 
     
    请列出5个常用的PHP操作 MuSQL的函数
     
    1、Mysql_connect()
    2、Mysql_select_db()
    3、Mysql_query()
    4、Mysql_fetch_row()
    5、Mysql_close()
     
    什么是时间戳?如何取得当前时间戳?
     
    时间戳是从1970年1月1日 00:00:00到指定日期的秒数
    获取当前时间戳;time()
     
     
    有一个网页地址,比如PHP开发资源网主页:,如何得到它的内容
     
    获取网页内容:
    $url = ""
    $str = file_get_contents($url)
     
    简述如何得到当前执行脚本路径,包括所得到的参数
     
    $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URL'] ;取得当前页面的完整路径和参数
     
    取得参数: $_SERVER['QUERY_STRING']
     
    如何用php的环境变量得到一个网页地址的内容,ip地址又要怎么样得到?
     
    echo $_server["PHP_SELF"];
    echo $_server["SERVER_ADDR"]
     
    求两个日期的差数
     
    $begin = strtotime("")
    $end = strtotime("")
    echo ($end - $begin) /(24*3600)
     
    给一个变量赋值为0123,但是输出该变量的值总是为其他数字?
     
    php解释器会把以0开始的数字当做是八进制,所以他的值会变为八进制
     
    php里面如何定义一个常量(constant)
     
    通过define()指令  列如  define("".100)
     
    在php里面可以对string "10" 和整型11进行比较吗
     
    可以,php内部实现会把所有东西转换成整型
     
    在什么情况下需要用endif来结束条件语句
    当if语句后面跟的是冒号:而不是大括号时
     
    优化MYSQL数据库的方法
     
    1.选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT null,列如省份,性别最好设置为enum
    2.使用连接(join)来代替子查询
    3.使用union来代替手动创建的临时表
    4.事务处理
    5.锁定表,优化事务处理
    6.使用外键,优化锁定表
     
    PHP加速模式/扩展? 调试工具
     
    Zend Optimizer 加速扩展
    调试工具: xdebug
     
    常用MYSql命令
    show databases
    show tables
    Insert into xx values()
    update xx set 字段 = xx where
    delete from xx where
    select  * from xx where xx order by  desc/asc limit ..
    group by ,, having ...
     
    进入mysql 管理命令行的命令
     
    Mysql -uroot -p 
     
    显示系统变量和值
    show variables
     
    请写出 5个常用的unix操作命令
     
    1. ls -l 以长格式的形式查看当前目录下所有可见文件的详细属性
    2. tar zxvf   xxx.tgz -c 指定目录       解压到指定目录
    3. tar czvf    xxx.tgz  指定目录          压缩到指定目录
    4. Cat     一次显示整个文件  从键盘创建一个文件   合并为一个文件
    5. mkdir   创建目录
    6. rm   删除
     
    请写出以下5个UNIX系统配置文件/服务的作用
     
    /etc/passwd :    用户信息文件,其中包含用户名,用户是否有密码,用户ID及用户所属组
    /etc/hosts  :主机数据库,包括IP地址,主机名 或域名 别名等信息,在此文件中添加记录可绕过dns
    /etc/fstab :保存了系统所有分区信息的配置文件
    crontab 计划任务命令
    Sshd 远程连接管理命令

    请写出5个常用的SQL操作关键字
     
    select update delete insert into create  group by order by 
     
    请列出5个常用的PHP操作 MuSQL的函数
     
    1、Mysql_connect()
    2、Mysql_select_db()
    3、Mysql_query()
    4、Mysql_fetch_row()
    5、Mysql_close()
     
    什么是时间戳?如何取得当前时间戳?
     
    时间戳是从1970年1月1日 00:00:00到指定日期的秒数
    获取当前时间戳;time()
     
     
    有一个网页地址,比如PHP开发资源网主页:,如何得到它的内容
     
    获取网页内容:
    $url = ""
    $str = file_get_contents($url)
     
    简述如何得到当前执行脚本路径,包括所得到的参数
     
    $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URL'] ;取得当前页面的完整路径和参数
     
    取得参数: $_SERVER['QUERY_STRING']
     
    如何用php的环境变量得到一个网页地址的内容,ip地址又要怎么样得到?
     
    echo $_server["PHP_SELF"];
    echo $_server["SERVER_ADDR"]
     
    求两个日期的差数
     
    $begin = strtotime("")
    $end = strtotime("")
    echo ($end - $begin) /(24*3600)
     
    给一个变量赋值为0123,但是输出该变量的值总是为其他数字?
     
    php解释器会把以0开始的数字当做是八进制,所以他的值会变为八进制
     
    php里面如何定义一个常量(constant)
     
    通过define()指令  列如  define("".100)
     
    在php里面可以对string "10" 和整型11进行比较吗
     
    可以,php内部实现会把所有东西转换成整型
     
    在什么情况下需要用endif来结束条件语句
    当if语句后面跟的是冒号:而不是大括号时
     
    优化MYSQL数据库的方法
     
    1.选取最适用的字段属性,尽可能减少定义字段长度,尽量把字段设置NOT null,列如省份,性别最好设置为enum
    2.使用连接(join)来代替子查询
    3.使用union来代替手动创建的临时表
    4.事务处理
    5.锁定表,优化事务处理
    6.使用外键,优化锁定表
     
    请以空格为间隔,拆分字符串,组成数组$fruit, 
    数组中所以元素都用小写字母,并按照字母先后次序排序
     
    <?php
    class sort {
        private $str;
        public function __construct($str) {
            $this->str=strtolower($str);
        }
        private function explodes() {
            if(empty($this->str)) return array();
            $arr=explode(" ",$this->str);
            return is_array($arr)?$arr:array($arr);
        }
        public function sort() {
            $explode=$this->explodes();
            sort($explode);
            return $explode;
        }
    }
    $str='Apple Orange Banana Strawberry';
    $sortob=new sort($str);
    print_r($sortob);
    var_dump($sortob->sort());
     
    php程序使用utf-8编码,以下程序输出结果是什么?
     
    中文占两个字符
     
    写一个函数,尽可能高效的,从一个标准的url中取出文件扩展名
    function getExt($url){
    $arr = parse_url($url);
    $file = basename($arr['path']); //解析url 返回组成部
    $ext = explode(".",file);//返回路径中文件名部分
    return $ext[1];
    }
     
    使用五种以上方式获取一个文件的扩展名
     
    function get_ext1($file_name){
    return strrchr($file_name,'.'); //函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
    }
     
    function get_ext2($file_name){
    return substr($file_name,strrpos($file_name, ‘.’));
    //先找出最后后一次出现的位置,再截取从该位置开始到结尾的字符串
    }
    function get_ext3($file_name){
    return array_pop(explode(‘.’, $file_name));
    //array_pop() 函数删除数组中的最后一个元素。
    }
    function get_ext4($file_name){
    $p = pathinfo($file_name);
    return $p['extension'];
    //pathinfo() 函数以数组的形式返回关于文件路径的信息。
    }
    function get_ext5($file_name){
    return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
    }
  • 相关阅读:
    1.2.2 标准命令概述
    1.3 第一个Go程序
    2. 基础类型
    转载:Pixhawk源码笔记一:APM代码基本结构
    IIS6的工作进程回收
    在电脑前独坐,又已经凌晨3点了
    IT人:为什么快乐不起来
    平淡的一天,平淡的心情
    发现一个很好玩的东西
    Jmeter脚本增强检查点
  • 原文地址:https://www.cnblogs.com/ygtup/p/9843402.html
Copyright © 2020-2023  润新知