PHP 学习知识汇总,不断更新中!!

这是自己在cnblog上写的博客。原文:http://www.cnblogs.com/mr-Lai/p/php_beginner.html

自己在学习PHP知识,然后又很多的知识点有待加强,故开此博客分享经验!

其中标有“?”的地方是本人不清楚的地方,还请大家积极帮助博主,被回答的问题将会用“!” 标出,(如果是搜索的话有可能是英文的?!,也有可能是中文的?!哦)博主也会尽自己所能回答大家的问题!!


31.?php中在没有构建自己的魔术函数 __construct时会不会直接继承父类的 __construct()函数
30.self this 和parent的区别和联系
    this 是目前实例的引用,也就是说,只有实例才能使用这个变量
    self与parent是一个类型的概念,一个是调用类本身,一个是调用父类的方法。
    一个例子,如果几个子类都需要使用父类的某个资源,这种资源又可以分为动态的和静态的。静态的诸如一个静态常量(static 量能够变化吗??
static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心保护。类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。
另外说明的是,static的成员,必须使用self来访问,使用this会出错。
   )
    动态的诸如一个数据库连接。
29. preg_replace 执行一个正则表达式的搜索和替换   http://php.net/manual/zh/function.preg-replace.php
28.

PHP String 函数

PHP:指示支持该函数的最早的 PHP 版本。

函数 描述 PHP
addcslashes() 在指定的字符前添加反斜杠。 4
addslashes() 在指定的预定义字符前添加反斜杠。 3
bin2hex() 把 ASCII 字符的字符串转换为十六进制值。 3
chop() rtrim() 的别名。 3
chr() 从指定的 ASCII 值返回字符。 3
chunk_split() 把字符串分割为一连串更小的部分。 3
convert_cyr_string() 把字符由一种 Cyrillic 字符转换成另一种。 3
convert_uudecode() 对 uuencode 编码的字符串进行解码。 5
convert_uuencode() 使用 uuencode 算法对字符串进行编码。 5
count_chars() 返回字符串所用字符的信息。 4
crc32() 计算一个字符串的 32-bit CRC。 4
crypt() 单向的字符串加密法 (hashing)。 3
echo() 输出字符串。 3
explode() 把字符串打散为数组。 3
fprintf() 把格式化的字符串写到指定的输出流。 5
get_html_translation_table() 返回翻译表。 4
hebrev() 把希伯来文本从右至左的流转换为左至右的流。 3
hebrevc() 同上,同时把(\n) 转为 <br />。 3
html_entity_decode() 把 HTML 实体转换为字符。 4
htmlentities() 把字符转换为 HTML 实体。 3
htmlspecialchars_decode() 把一些预定义的 HTML 实体转换为字符。 5
htmlspecialchars() 把一些预定义的字符转换为 HTML 实体。 3
implode() 把数组元素组合为一个字符串。 3
join() implode() 的别名。 3
levenshtein() 返回两个字符串之间的 Levenshtein 距离。 3
localeconv() 返回包含本地数字及货币信息格式的数组。 4
ltrim() 从字符串左侧删除空格或其他预定义字符。 3
md5() 计算字符串的 MD5 散列。 3
md5_file() 计算文件的 MD5 散列。 4
metaphone() 计算字符串的 metaphone 键。 4
money_format() 把字符串格式化为货币字符串。 4
nl_langinfo() 返回指定的本地信息。 4
nl2br() 在字符串中的每个新行之前插入 HTML 换行符。 3
number_format() 通过千位分组来格式化数字。 3
ord() 返回字符串第一个字符的 ASCII 值。 3
parse_str() 把查询字符串解析到变量中。 3
print() 输出一个或多个字符串。 3
printf() 输出格式化的字符串。 3
quoted_printable_decode() 解码 quoted-printable 字符串。 3
quotemeta() 在字符串中某些预定义的字符前添加反斜杠。 3
rtrim() 从字符串的末端开始删除空白字符或其他预定义字符。 3
setlocale() 设置地区信息(地域信息)。 3
sha1() 计算字符串的 SHA-1 散列。 4
sha1_file() 计算文件的 SHA-1 散列。 4
similar_text() 计算两个字符串的匹配字符的数目。 3
soundex() 计算字符串的 soundex 键。 3
sprintf() 把格式化的字符串写写入一个变量中。 3
sscanf() 根据指定的格式解析来自一个字符串的输入。 4
str_ireplace() 替换字符串中的一些字符。(对大小写不敏感) 5
str_pad() 把字符串填充为新的长度。 4
str_repeat() 把字符串重复指定的次数。 4
str_replace() 替换字符串中的一些字符。(对大小写敏感) 3
str_rot13() 对字符串执行 ROT13 编码。 4
str_shuffle() 随机地打乱字符串中的所有字符。 4
str_split() 把字符串分割到数组中。 5
str_word_count() 计算字符串中的单词数。 4
strcasecmp() 比较两个字符串。(对大小写不敏感) 3
strchr() 搜索字符串在另一字符串中的第一次出现。strstr() 的别名 3
strcmp() 比较两个字符串。(对大小写敏感) 3
strcoll() 比较两个字符串(根据本地设置)。 4
strcspn() 返回在找到任何指定的字符之前,在字符串查找的字符数。 3
strip_tags() 剥去 HTML、XML 以及 PHP 的标签。 3
stripcslashes() 删除由 addcslashes() 函数添加的反斜杠。 4
stripslashes() 删除由 addslashes() 函数添加的反斜杠。 3
stripos() 返回字符串在另一字符串中第一次出现的位置(大小写不敏感) 5
stristr() 查找字符串在另一字符串中第一次出现的位置(大小写不敏感) 3
strlen() 返回字符串的长度。 3
strnatcasecmp() 使用一种“自然”算法来比较两个字符串(对大小写不敏感) 4
strnatcmp() 使用一种“自然”算法来比较两个字符串(对大小写敏感) 4
strncasecmp() 前 n 个字符的字符串比较(对大小写不敏感)。 4
strncmp() 前 n 个字符的字符串比较(对大小写敏感)。 4
strpbrk() 在字符串中搜索指定字符中的任意一个。 5
strpos() 返回字符串在另一字符串中首次出现的位置(对大小写敏感) 3
strrchr() 查找字符串在另一个字符串中最后一次出现的位置。 3
strrev() 反转字符串。 3
strripos() 查找字符串在另一字符串中最后出现的位置(对大小写不敏感) 5
strrpos() 查找字符串在另一字符串中最后出现的位置(对大小写敏感) 3
strspn() 返回在字符串中包含的特定字符的数目。 3
strstr() 搜索字符串在另一字符串中的首次出现(对大小写敏感) 3
strtok() 把字符串分割为更小的字符串。 3
strtolower() 把字符串转换为小写。 3
strtoupper() 把字符串转换为大写。 3
strtr() 转换字符串中特定的字符。 3
substr() 返回字符串的一部分。 3
substr_compare() 从指定的开始长度比较两个字符串。 5
substr_count() 计算子串在字符串中出现的次数。 4
substr_replace() 把字符串的一部分替换为另一个字符串。 4
trim() 从字符串的两端删除空白字符和其他预定义字符。 3
ucfirst() 把字符串中的首字符转换为大写。 3
ucwords() 把字符串中每个单词的首字符转换为大写。 3
vfprintf() 把格式化的字符串写到指定的输出流。 5
vprintf() 输出格式化的字符串。 4
vsprintf() 把格式化字符串写入变量中。 4
wordwrap() 按照指定长度对字符串进行折行处理。 4

PHP String 常量

PHP:指示支持该常量的最早的 PHP 版本。

常量 描述 PHP
CRYPT_SALT_LENGTH 包含系统默认加密方法的长度。对于标准 DES 加密,长度是 2。
CRYPT_STD_DES 如果支持 2 字符 salt 的 DES 加密,则设置为 1,否则为 0。
CRYPT_EXT_DES 如果支持 9 字符 salt 的 DES 加密,则设置为 1,否则为 0。
CRYPT_MD5 如果支持以$1$开始的 12 字符 salt 的MD5加密,则设置为1,否则为0。
CRYPT_BLOWFISH 如果支持以 $2$ 或 $2a$ 开始的 16 字符 salt 的 Blowfish 加密,则设置为 1,否则为 0。
HTML_SPECIALCHARS

HTML_ENTITIES

ENT_COMPAT

ENT_QUOTES

ENT_NOQUOTES

CHAR_MAX

LC_CTYPE

LC_NUMERIC

LC_TIME

LC_COLLATE

LC_MONETARY

LC_ALL

LC_MESSAGES

STR_PAD_LEFT

STR_PAD_RIGHT

STR_PAD_BOTH

27. array_keys() 函数返回包含数组中所有键名的一个新数组。
compact extract implode
?26. As Artefacto points out in the comments, $a =& $b is not the same as $a = (&$b) .
This is because while the & operator means make a reference out of something, the = operator does assign-by- value, so the expression $a = (&$b) means make a temporary reference to $b, then assign the value of that temporary to $a, which is not assign-by-reference.
25.?用php实现css <script async ...>
24. Notes on reference:
A reference is not a pointer. However, an object handle IS a pointer. Example:
<?php
class Foo {
 private static
$used ;
 private
$id ;
 public function
__construct () {
$id = $used ++;
 }
 public function
__clone () {
$id = $used ++;
 }
}

$a = new Foo ; // $a is a pointer pointing to Foo object 0
$b = $a ; // $b is a pointer pointing to Foo object 0, however, $b is a copy of $a
$c = & $a ; // $c and $a are now references of a pointer pointing to Foo object 0
$a = new Foo ; // $a and $c are now references of a pointer pointing to Foo object 1, $b is still a pointer pointing to Foo object 0
unset( $a ); // A reference with reference count 1 is automatically converted back to a value. Now $c is a pointer to Foo object 1
$a = & $b ; // $a and $b are now references of a pointer pointing to Foo object 0
$a = NULL ; // $a and $b now become a reference to NULL. Foo object 0 can be garbage collected now
unset( $b ); // $b no longer exists and $a is now NULL
$a = clone $c ; // $a is now a pointer to Foo object 2, $c remains a pointer to Foo object 1
unset( $c ); // Foo object 1 can be garbage collected now.
$c = $a ; // $c and $a are pointers pointing to Foo object 2
unset( $a ); // Foo object 2 is still pointed by $c
$a = & $c ; // Foo object 2 has 1 pointers pointing to it only, that pointer has 2 references: $a and $c;
const ABC = TRUE ;
if(
ABC ) {
$a = NULL ; // Foo object 2 can be garbage collected now because $a and $c are now a reference to the same NULL value
} else {
 unset(
$a ); // Foo object 2 is still pointed to $c
}
23.标志符 identifier    引用 references   A PHP reference is an alias,
22.后期静态绑定
21. 类型约束
20. PHP 5 中的对象比较要比 PHP 4 中复杂,所期望的结果更符合一个面向对象语言。

当使用比较运算符(==)比较两个对象变量时,比较的原则是:如果两个对象的属性和属性值 都相等,而且两个对象是同一个类的实例,那么这两个对象变量相等。

而如果使用全等运算符( === ),这两个对象变量一定要指向某个类的同一个实例(即同一个对象)。
19. 对象复制可以通过 clone 关键字来完成(如果可能,这将调用对象的 __clone() 方法)。对象中的 __clone() 方法不能被直接调用。
$copy_of_object = clone $object;
18. PHP 5 提供了一种定义对象的方法使其可以通过单元列表来遍历,例如用 foreach 语句。默认情况下,所有 可见 属性都将被用于遍历。
17. PHP所提供的" 重载 "(overloading)是指动态地" 创建 "类属性和方法。我们是通过魔术方法(magic methods)来实现的。
16. PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
15. 声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
14. 本页说明了用 static 关键字来定义静态方法和属性。 static 也可用于 定义静态变量 以及 后期静态绑定 。参见上述页面了解 static 在其中的用法。
13. 对属性或方法的访问控制,是通过在前面添加关键字 public (公有), protected (受保护)或 private (私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。 比如,当扩展一个类,子类就会继承父类所有公有的和受保护的方法。
12. 自动加载对象
11. 可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。
10. 类的变量成员叫做“属性”,或者叫“字段”、“特征”
9. PHP不支持多重继承,一个类只能继承一个基类。
8.类->对象->实例  引用
7. 当一个方法在类定义内部被调用时,有一个可用的伪变量 $this $this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象 静态 调用时也可能是另一个对象)。
6. http://www.php.net/manual/zh/reserved.php保留字
5. PHP 5 中的新特性包括 访问控制 抽象类 final 类与方法,附加的 魔术方法 接口 对象复制 类型约束
4. 用户可能注意到了以下的代码功能完全相同:
<?php
$arr = array( "one" , "two" , "three" );
reset ( $arr );
while (list(,
$value) = each($arr )) {
   echo
"Value: $value <br>\n" ;
}

foreach (
$arr as $value ) {
   echo
"Value: $value <br />\n" ;
}
?>
3. 语言结构
2. 这样写“ $b = ( $a = 5)”和这样写“ $a = 5; $b = 5”(分号标志着语句的结束)是一样的“ ( $a = 5)”的值为5
1.常量和变量有如下不同: http://www.php.net/manual/zh/language.constants.syntax.php
  • 常量前面没有美元符号($);

  • 常量只能用 define() 函数定义,而不能通过赋值语句;

  • 常量可以不用理会变量的作用域而在任何地方定义和访问;

  • 常量一旦定义就不能被重新定义或者取消定义;

  • 常量的值只能是标量。

  • Example #1 定义常量

  • <?php

  • define("CONSTANT", "Hello world.");
    echo
    CONSTANT; // outputs "Hello world."
    echo Constant; // 输出 "Constant" 并发出一个提示级别错误信息
    ?>
    Example #2 使用关键字 const 定义常量
    <?php
    // 以下代码在 PHP 5.3.0 后可以正常工作
    const CONSTANT = 'Hello World';

    echo
    CONSTANT;
    ?>

    Note:

    和使用 define() 来定义常量相反的是,使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。


你可能感兴趣的:(PHP,新手)