1. PHP是什么?
答: (Hypertext Preprocessor 超文本预处理器字母缩写)
2.如何从 PHP 获取系统信息?
答: <?php phpinfo(); ?>
3.$_SERVER是一个特殊的 PHP 保留变量,它包含了 web 服务器提供的所有信息,被称为超全局变量。
4.如何从 HTML 中分离之高级分离术?
答:<?php
if ($expression)
?>
<strong>This is true.</strong>
<?php
} else {
?>
<strong>This is false.</strong>
<?php
}
?>
5. <? 代码 ?> // 短标记仅在通过php.ini 配置文件中的指令short_open_tag打开后才可用
<% 代码 %> // ASP 风格标记仅在通过php.ini 配置文件中的指令asp_tags打开后才可用
<script language="php">代码</script> 也可以使用.
例: <script language="php">
echo 'some editors (like FrontPage) don\'t
like processing instructions';
</script>
6.当转换为boolean时,以下值被认为是 FALSE.
l the 布尔值 FALSE 自身
l the 整型值 0 (零)
l the 浮点型值 0.0 (零)
l空字符串, 以及字符串 "0"
l不包括任何元素的数组
l不包括任何成员变量的对象(仅PHP 4.0 适用)
l特殊类型NULL (包括尚未设定的变量)
7.八进制表示数字前必须加上 0(零),十六进制表示数字前必须加上 0x。
8.如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。例:<?phpvar_dump(01090); ?>// 八进制 010 = 十进制 8
9.整数值的字长可以用常量PHP_INT_SIZE来表示. 最大值可以用常量PHP_INT_MAX 来表示
10.如果给定的一个数超出了integer的范围,将会被解释为float。同样如果执行的运算结果超出了integer范围,也会返回float。
11.PHP 中没有整除的运算符。1/2 产生出float0.5。可以总是舍弃小数部分,或者使用round()函数(四舍五入)。
例:echo round(7/3); //2
12.决不要将未知的分数强制转换为integer,这样有时会导致不可预料的结果。例:echo (int) ( (0.1+0.7) * 10 ); // 显示 7
13.简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。
例:echo floor((0.1+0.7)*10);//返回 7 而不是预期中的 8
因为该结果内部的表示其实是类似 7.9。这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3。所以不要相信浮点数结果精确到了最后一位,也不要比较两个浮点数是否相等。
4.什么是定界符(Heredoc Syntax)?
答:在编程过程中难免会遇到用echo来输出大段的html和javascript脚本,如果用传统的输出方法,肯定要有大量的转义符来对字符串中的引号等特殊字符进行转义,不免出现语法错误。
1.PHP定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;
2.在PHP定界符中的任何特殊字符都不需要转义;
3.PHP定界符中的PHP变量会被正常的用其值来替换。
PHP中的定界符格式是这样的:
<<<EOF
……文本
EOF;
注意:1.在<<<;之后的字符是自己定义的,随便什么都是可以的,但是结尾处的字符一定要和他一样
2.结尾符一定要顶格写!
3.如果在定界符中间出现有PHP的变量,你只需要像在其它字符串中输出一样写就行了
15. 可以用 heredoc语法通过数据传给函数参数.
php如何运行代码例: var_dump(array(<<<EOD
foobar!
EOD
)); // array(1) { [0]=> string(7) "foobar!" }
16. 可以用array()语言结构来新建一个array。它接受任意数量用逗号分隔的键(key) => 值(value) 对。
例:$arr = array("foo" => "bar", 12 => true);
17.unset()函数允许删除数组中的某个键。但要注意数组将不会重建索引。
18. 为什么 $foo[bar] 错了?
答:应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是$foo[bar]。原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能
运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。
19. 若使用引用操作符通过引用来拷贝数组。由于指的是同一个数组, 改变任何一方, 值都会改变.
例:$arr = array(1, 2); $brr = &$arr; $brr['1'] = 5;
print_r($arr); print_r($brr); //Array ( [0] => 1 [1] => 5 ) Array ( [0] => 1 [1] => 5 )
20.特殊的NULL值表示一个变量没有值。NULL类型唯一可能的值就是 NULL。
在下列情况下一个变量被认为是 NULL: 1)被赋值为 NULL。 2)尚未被赋值。 3)被unset()。
21. 字符串转换成数字的方法: $foo = 5 + "10 Little Piggies"; //$foo=15
22. 允许的强制转换有: 例: $foo = (int)$bar;
l(int), (integer) - 转换为整型(integer)
l(bool), (boolean) - 转换为布尔型(boolean)
l(float), (double), (real) - 转换为浮点型(float)
l(string) - 转换为字符串(string)
l(binary) - 转换为二进制字符串(string) (PHP 6)
l(array) - 转换为数组(array)
l(object) - 转换为对象(object)
l(unset) - 转换为NULL (PHP 5)
23.未初始化的变量具有其类型的默认值 - 布尔类型的变量默认值是FALSE,整形和符点型变量默认值是零,字符串型变量默认值是空字符串或者数组变量的默认值是空数组。
24.大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了include 和 require 引入的文件。例:$a = 1;
include 'b.inc';//这里变量 $a将会在包含文件b.inc中生效。
25.任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。
例:$a = 1;
function Test()
{ echo $a; }
Test(); //不会有任何输出, 因为echo语句引用了一个局部版本的变量$a,在这个范围内,它没有被赋值。
26. PHP 中全局变量在函数中使用时必须申明为global.
例: $a = 1;
function Test()
{ global $a;
echo $a; }
Test(); //输出1
27.在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义$GLOBALS数
组。
例:$a = 1;
function Test()
{ echo $GLOBALS['a']; }
Test(); //输出1
28.静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。例: function grx()
{ static $a;
$a++;
echo $a; }
grx(); grx(); grx(); //;输出123
29.静态变量不能在声明的同是对其赋值.
30.可变变量就是把变量的值当作一个新的变量. 在变量名前再加一个$.
例:$name = 'zkm';
$$name = 'zhukongming';
echo $zkm; //输出zhukonming
31.在 PHP 的函数和类的方法中,超全局变量不能用作可变变量。
32.通常PHP不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。$是一个非法变量名. 这时,解析器看到是一个名为$varname的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或
保留字)'ext'。很明显这不是想要的结果。所以PHP 将会自动将变量名中的点替换成下划线。
33.常量默认为大小写敏感。通常常量标识符总是大写的。
34. 常量可以用define()函数来定义。php5.3.0后也可以使用const关键字在类定义的外部定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
例:define("CONSTANT", "Hello world."); 例: const CONSTANT = 'Hello World';
echo CONSTANT; // 输出"Hello world." echo CONSTANT;
// 输出"Hello world."
35. 常量和(全局)变量在不同的名字空间中。这意味着TRUE 和 $TRUE 是不同的。
36. 常量和变量有如下不同:
l常量前面没有美元符号($);
l常量只能用define()函数定义,而不能通过赋值语句;
l常量可以不用理会变量的作用域而在任何地方定义和访问;
l常量一旦定义就不能被重新定义或者取消定义;
l常量的值只能是标量。
37.魔术常量: 随着它们在代码中的位置改变而改变。
__LINE__ 文件中的当前行号
__FILE__文件的完整路径和文件名
__ DIR__文件所在的目录
__FUNCTION__函数名称
__CLASS__类的名称
__METHOD__ 类的方法名
__NAMESPACE__当前命名空间的名称
38.三元条件运算符语法: $first ? $second : $third
例:$a = 5;
echo ($a > 3)? 'haha' : 'grx'; //haha
39.位运算符
$a & $b And a和b都为1则为1
$a | $b Or a或b为1就为1
$a ^ $b Xor a不等于b就是1
~ $a Not 0为1,1为0
$a << $b ShiftL 每移动一次乘2
$a >> $b SR 每移动一次除2
40.位运算符允许对整型数中指定的位进行置位.如果左右参数都是字符串,则位运算符将操作字符的 ASCII 值.
例:echo "12" ^ "9"; // 输出退格字符(ascii 8)
echo "2" ^ 3; // 输出 1等于 ((int)"2") ^ 3 == 1
41. PHP 支持一个错误控制运算符:@.当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉.它只对表达式有效.
42.运算符优先级
结合方向运算符附加信息
非结合clone new clone和new
左[] array()
非结合++ -- 递增/减
非结合~ - (int)(float)等类型
非结合instanceof 类型
右! 逻辑操作符
左* / % 算术运算
左+ - .算术和字符串
左<< >> 位
非结合< <= > >= 比较
非结合== != == 比较
左& 位
左^ 位
左| 位
左&& 逻辑
左|| 逻辑
左? : 三元
右= += -= *= /= 赋值
左and 逻辑
左xor 逻辑
左or 逻辑
左, 多处用到
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论