php-基础知识
1. 字符串中的单引号与双引号的区别?
两者均能表示字符串,不同之处在于双引号包含的变量($str)会被自动替换成变量的实际数值,而单引号中包含的变量则按照普通字符串输出。
需要注意的是:对转义符的使用,在单引号的字符串中,使用单引号时,只要对单引号进行进行转义(\''); 单在双引号字符串中还要注意 双引号,$等字符的使用,这些特殊字符都需要转义符来先转换。
2. if(‘0’ == “ttt”){echo '相等'} else {echo‘不相等’}; 输出结果?
总结一句话:0等于任何非数字开头的字符串。 由于‘0’ 即0 ,“ttt” 与0比较也是0 ,故两者相等。如需这个条件不成立,则需要使用判断是否全等 “===”, 既要判断数值是否相等还需判断类型是否一致。
3. 对于数据类型转换有两种方法
a. 强制转换,如: 强转为integer, $a = (integer)'123abd'; 结果为$a=123;(注意:字符串只被截取到非数字前,具体看第4点)
b. 使用settype函数, settpye(参数1:变量,参数二:‘转换类型’);如:$a='123abc'; settype($a,'integer'); echo $a; 输出结果为:123; 需要注意的是:参数1放的必须是变量,且settype函数的返回值类型是BOOL。
4. 字符串转换为整型或者浮点型
如果字符串是以数字开头的,就会先把数字部分转换为整型,再舍去后面的字符串;如果数字中含有小数点,则会去到小数点前一位。
5. 布尔类型
在php中,不是只有false值才为假,在一些特殊情况下bool值也被认为是false。如 0, 0.0, “0” , “ ”(空字符串);
6. 复合数据类型
Array(数组)和Object(对象), 两者能够相互转换,
如$array = array('p','h','p');
$obj = $array;
foreach ($obj as $value) {
echo $value;
} 输出:php
php的数组和iOS有所不同 ,php数组是可以键值对形式存入,它不是根据索引取值。
7. 常量
php中的常量和iOS中的宏定义一致。如使用常量定义一个网站,和一个域名。如:
define(‘WEB_SITE’, 'http://www.baidu.com');
define(’SITE_NAME’, '百度'); define函数的返回值为BOOL类型来判断该常量是否已经定义过;
8. 变量
变量赋值有三种方法:直接赋值,间接赋值,引用赋值
间接赋值:间接赋值后两个变量使用各自的内存,互不干扰
引用赋值:赋值后两个变量执向的是同一块内存地址,当其中一个变量的值改变,另一个变量的也随着改变。使用 & 符号来表示引用。(个人觉得可以理解为类似于双指针)
9. 变量作用域
局部变量,全局变量,静态变量。作用域和其他语言一样,需要注意的是:在php中 全局变量在函数中使用需要在函数中先用global声明;如:
$a = 0;
function foo(){
global $a;
$a ++;
echo $a;
}
10. 预定义变量
$_SERVER['REMOTE_ADDR'] :正在浏览当前页面用户的IP地址
$_SERVER['REMOTE_HOST'] : 正在浏览当前页面用户的主机名
$_SERVER['REMOTE_PORT'] : 用户连接到服务器时使用的端口
还有$_SESSION , $_POST, $_GET , $GLOBALS。
11. 拓展
[HTTP_HOST] : 主机名
[HTTP_REFERER] : 用户跳转到当前页面前网页地址
[SERVER_NAME] ,[SERVER_ADDR] :用户IP地址