.NET程序员学PHP要注意的坑

<?php
/*
 * PHP基础语法:变量、变量类型、数据类型转换、常量
 * 常用函数收集:empty(),isset(),unset(),var_dump(),gettype(),print_r()
 *
 */
 
$a = 100;   //$变量名
$a = "Hello";   //变量类型赋值后发生了变化
echo gettype($a);
ECHO "Hello World"; //内置结构和关键字以及用户自定义的类名、函数名不区分大小写。变量名区分大小写[我只能呵呵]
//可变变量
$hi = "hello";
$$hi = "world";     //可变变量$$hi, 相当于$hello = "world"
echo "$hi $hello";
echo "$hi ${$hi}";      //$$hi $hello等价
//引用赋值
$foo = 'bob';
$bar = &$foo;       //&引用赋值,PHP引用并不是地址指针,只是把各自的值关联起来,unset()不会导致所有引用变量消失
$bar = 'jack';      
unset($foo);
echo $bar;
/*
 * 数据类型:不是由程序员设定的,由PHP根据变量使用的上下文在运行时决定的。
 * 4种标量类型:boolean,integer,float,string
 * 2种复合类型:array,object
 * 2种特殊类型:resource,NULL
 */
//布尔型boolean:如何类型的值都可以自动转换成boolean,以下认为是FALSE,其它都是TRUE
/*
 * 0或0.00为False,-1和其他非零为True
 * 空白字符串和字符串"0"为False
 * 没有成员变量的数组
 * 特殊类型NULL,包括尚未设定的变量
 */
//整型Interge:32位平台-2147483648~2147483647,不支持无符号整数。超出范围就变成float
$int1 = 10; $int2 = 0123; $int3 = 0xFA;     //十进制,八进制0开头,十六进制0x开头
//浮点数float或double, 与平台相关1.7E-38~1.7E+38,精确到小数点后15位。浮点数8内部类似7.9999999999...
$float1 = 1.234; $float2 = 1.2e3; $float3 = 7E-10;  //7*10的-10次方
//字符串String:单引号、双引号、定界符
//单引号:不会解析单引号中的变量。仅能转义单引号和转义字符\本身。单引号效率高一些。
echo 'this\'s \\a simple string';
//双引号:变量名会被变量值代替,可用${}形式,可解析其它转义字符:\n, \r,\t等等
//定界符:<<<EOT 定界符可以有多行字符串 EOT;   和双引号一样,变量和转义符号都会被解析
//数组Array:可以存入如何类型的数据。是一个有序图(把values映射到keys)。
$arr1 = array("foot" => "bar", 12 => true);     //key可以是integer或string,value可以是任何类型
print_r($arr1);
//对象Object:由一组属性值和一组方法构成。
class Person                //class前面是不能加public的,这和.NET可不同。作用域可能和导入到其他文件中有关。暂时只能满脑子???
{
    public $name;           //Public,Protected,Private可见性是一样的
    function Say()
    {
        echo "Doing foo.";
    }
}
$person1 = new Person();     //也是用new生成类的实例对象
$person1->name = "Tom";
$person1->Say();
echo gettype($person1->name);
//资源类型Resource:外部资源的引用,通过专门的函数来建立和使用。打开文件、数据库连接、图形画布区域等的句柄.
//据说忘记释放资源,系统自动启动垃圾回收机制
$file_handle = fopen("ttt.txt", "r");
var_dump($file_handle);     //创建成功返回资源引用,创建失败返回boolean(false)
if(!$file_handle)
{
    echo 'Failed to open file';
}
//NULL类型:NULL值。下列情况被认为是NULL:直接赋值了NULL, 声明变量尚未赋值, 被unset()销毁的变量
//数据类型转换:自动转换、强制转换
//自动转换:通常只有4种标量类型混合运算才会自动转换。按长度增加的方向。
/*
 * True变1,False变0
 * integer先转为float
 * 字符串先转换为数字:字符串[最前面是]数值部分不带小数点-integer,否则-float. 不是数值开头的-0
 */
//强制类型转换:除了(int)形式外,可用转换函数:intval()、floatval()、strval()等不会改变原变量类型,只获取新值
echo (int)'a123';       //0
echo (int)'123';        //123
//settype($var, 'integer');     //改变了变量的类型
//浮点 转换 为整型,舍弃小数部分,超出整型范围,结果将不确定。NULL转换为字符串为“”。
//变量类型的测试函数:
/*
 * is_bool,is_int,is_float,is_string.....
 */
//常量:作用域是全局的。只能是标量(boolean,integer,float,string)类型。定义后不能重新定义或取消定义。
//常量的定义和使用:define()函数,命名与变量一致,区分大小写,惯例是全部大写。不要$符号。defined()检查是否定义了。
//boolean define(string name, mixed value[,bool case_insensitive]);     mixed-代表多种类型都可。
define("PI", 3.1415926);
//预定义常量:
echo PHP_OS;
echo PHP_VERSION;   
echo DIRECTORY_SEPARATOR;   //\
echo PATH_SEPARATOR;        //;
echo E_ERROR;               //1
echo E_WARNING;             //2
echo E_PARSE;               //4
echo E_NOTICE;              //8
echo M_PI;                  //3.14159...
//魔术常量:
echo __FILE__;
echo __LINE__;
echo __FUNCTION__;
echo __CLASS__;
echo __METHOD__;

你可能感兴趣的:(PHP)