标签 知识 下的文章

PHP 一些常用字符串函数总结

1、字符串转换(分割)为数组

explode(),需要至少两个参数,第一个参数是分隔符,第二个参数是带转化字符串,很常用,之前好几个实例都用到了。
扩展阅读:http://www.php.net/manual/zh/function.explode.php

2、数组转换(合并)为字符串

implode()至少一个参数为数组,另一个参数作为分隔符,默认是空格
扩展阅读:http://www.php.net/manual/zh/function.implode.php

3、字符串截取

substr()由start和length截取,在PHP 编写函数实现千位分组中有所应用。
扩展阅读:http://www.php.net/manual/zh/function.substr.php

strstr()由起始字符截取(区分大小写,不区分为stristr),这里讲一下选填的第三个参数,默认是false,如果是true那么就会截取他之前的(不包括该字母),默认是(包括该字母)之后的
扩展阅读:http://www.php.net/manual/zh/function.strstr.php

其还有一个相反的strrchr()查找最后一次出现的位置到结尾,但不能反向输出。
扩展阅读:http://www.php.net/manual/zh/function.strrchr.php

4、字符串替换

str_replace,第一个参数为要替换的对象,第二个是替换成什么,第三个是指定的字符串。
扩展阅读:http://www.php.net/manual/zh/function.str-replace.php

5、字符串查找

strpos()查找字符首次出现的位置,返回数字,第一个为0,应用于PHP 计算两个文件的相对路径,0的话就遇到了一个困难,判断的时候要怎么判断,这个时候就不能使用== FALSE,而要使用全等=== FALSE
扩展阅读:http://www.php.net/manual/zh/function.strpos.php

通过static关键字限制一个类最多只能创建出一个实例化对象

<?php
    class Single {
        private static $element = NULL;

        private function __construct() {
            echo "Hello World! ";
        }

        static function get() {
            if(is_null(self::$element)) {
                self::$element = new self();
                echo 'I will never give up. ';
                return self::$element;
            }
        }
    }

    $single = Single::get();
    $double = Single::get();

核心在于static是属于类而不是属于对象的,所以改变值会反应到类。设定初值为NULL,在方法里赋值,而如果是NULL,在方法里调用,赋为new self()在外界就变成了$single = new Single(),而$double调用时什么都不会发生了,此时静态变量已经不是NULL了不会进入判断体

PHP面向对象中接口和抽象类的区别及应用场景

  抽象类访问权限不能是private 可以有不是抽象属性和抽象方法 所以抽象方法前要加abstract 如果有抽象方法 这个类就是抽象类 前要加abstract 继承用extends 子类必须定义所有抽象方法,抽象方法不能实例化对象,子类使用implements关联接口
  接口内不能声明变量 只能声明常量,并且所有成员权限都是public 接口声明用interface
  一个类可以由一个父类但可以有许多接口,必须要将所有接口中的抽象方法全部实现才能创造对象,所以接口可以用于规范化和追加功能

PHP面向对象一道题认识些函数

题目是酱紫的:
以下会输出啥?

<?php
    class sample {
        function __call($a, $b) {
            echo ucwords(implode(' ', $b).' '.$a); //每个单词首字母大写
        }

        function ads() {
            ob_start();    //打开缓冲控制
            echo 'by';
            return $this;
        }

        function ade() {
            $c = ob_get_clean();
            $this->php('brophp', $c);
        }
    }

    $inst = new sample();

- 阅读剩余部分 -

关于public,protected,private,static,const和final

  public 可以被同一个类、子类、外部访问和调用
  protected 只能被同一个类 子类调用和访问
  private 只能被同一个类 调用和访问
  static的成员属性或者方法可以不实体化直接通过self::来调用 也可以通过实体化$this-> 并且static属于类而不属于具体对象,数据会共享
  const 只能通过self::来访问 常量通常都是大写而且没有$

`final`代表不能被继承和重构

PHP5魔术方法小结

__construct(),__destruct(),__call(),__callStatic(),__get(),__set(),__isset(),__unset(),__sleep(),__wakeup(),__toString(),__invoke(),__set_state() 和 __clone() 等方法在 PHP 中被称为"魔术方法"(Magic methods)。在命名自己的类方法时不能使用这些方法名,除非是想使用其魔术功能。

__construct()__destruct() 构造函数和析构函数,一个在调用的时候设定默认值啦,或者是方便赋protected或者private的值,另一个在对象销毁前被调用,__destruct()内不能有任何参数。

在对象中调用一个不可访问方法时,__call() 会被调用。

用静态方式中调用一个不可访问方法时,__callStatic() 会被调用。参数由方法,数组组成。

__get(),__set(),一个可以外部调用的属性设为只读,一个只写,参数由成员属性名,成员属性的值组成。

__isset()__unset()在外部使用isset() unset()会调用这两个方法

__sleep()__wakeup()在串行化和反串行化调用输出

__toString()__invoke() __toString可以在echo 对象的时候调用输出字符串,以函数方法调用对象时会触发__invoke()

__clone() 不需要任何参数,当对象使用clone $xxx时被调用,原本对象的引用 $that-> 克隆对象$this->

__set_state() 当调用 var_export() 导出类时,此静态 方法会被调用。

PHP实现冒泡排序

冒泡排序,所有语言中的基础排序方法OTZ(画外音:那为什么你总是忘了冒泡排序的原理勒)

百度百科介绍:

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再?> 需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。

介绍2:

冒泡排序算法的运作如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

- 阅读剩余部分 -