PHP学习笔记1

更新记录

2017.01.18 添加超全局变量和数组部分;补充代码书写和注释的内容
2017.02.09 补充完善字符串相关内容;补充变量类型相关内容

一些基本概念

  • PHP代码写在PHP标签里面,<?php code here ?>,一个文件可以有多对标签,当代码结束以后后面没有其他内容时,通常不闭合标签,一是这种情况PHP引擎本身也能完成解析,二是可以避免埋下一些坑点;例如是嵌套HTML的.php文件那当然是要闭合的啦。

    其实还有诸如短标签<? code here ?>(需要在安装配置里开启),script标签<script language="php"></script>,ASP风格(5.3以后废弃)这些书写方式,不过知道就好了。

  • 注释代码除了JS里的两种方式外还支持shell风格的#注释

  • 内容输出

  • echo语句: echo '这是一个字符串', 123; echo语句主要输出字符串,数字,可以一次输出多个内容,用逗号隔开。另外,PHP的语法比JS更加严格,像这个echo语句,echo后面没有空格,语句结束没有分号,都会报语法错误。

  • print: print 123;print('abc');两种方式都可以达到同样的输出。print和echo两者的区别:
    1.echo和print都不是函数,是PHP语言本身的结构,但是echo没有返回值,print会有返回值;
    2.echo可以一次性输出多个内容,print不可以,会报错
    3.echo的运行速度比print快

  • var_dump函数,输出的内容会很详细

<?php
var_dump('abc');  // string(3) "abc"
var_dump(123);  // int(123) 
var_dump(false);  // bool(false)
?>
  • echo在输出布尔值的时候,true会输出1,false不会输出;print和print_r也同样如此。
echo true, false, true;  // 11
print true;  // 1
print false;  // 空白,没有输出
print_r(true);  // 1
  • 变量与数据类型
    $声明变量,PHP变量名可以用中文,不过一般不会这么写的;
    PHP的变量共有8种原始类型,其中四种标量类型(整型 integer,浮点型 float,布尔型 boolean,字符串 string),两种复合类型(数组 array,对象 object),两种特殊类型(资源 resource,空 null);
    gettype()函数传入变量查看类型;
    声明变量但未赋值,或者赋值为null(NULL, NULl大小写不敏感),或者对变量调用unset()函数,变量的值都为特殊类型null;
    字符串变量用双引号时,可以传入变量自动解析,换言之,如果想在字符串里输出美元符号$,那就得使用单引号字符串了;
    跟JS同样的,字符串里的引号,可以通过单双引号交叉或者转义符号实现;
    可以使用Heredoc结构形式来创建长字符串,以<<<(界定符)GOD(标识符)作为开始,然后字符串结尾处再使用GOD结束;

    $a = 123;
    $b = "abc$a";  // 'abc123'
    $c = 'abc$a';  // 'abc$a'
    $d = <<<GOD
    我有一只小毛驴,我从来也不骑。
    有一天我心血来潮,骑着去赶集。
    我手里拿着小皮鞭,我心里正得意。
    不知怎么哗啦啦啦啦,我摔了一身泥。
    GOD;
    echo $d; // 输出换行也会保留
    

    创建对象$obj = new stdClass();
    PHP的变量作用域更加严格,同样也有全局变量和局部变量,即使是全局变量,在函数内也无法直接访问,要想在函数内访问外部变量,一般通过传递参数来进行;函数内访问全局变量可以使用global关键字,但现在一般也不这么做了。

    $a = 11;
    test();
    function test(){
        global $a;
        echo $a;
    }
    
  • 运算符
    PHP的字符串拼接用.符号,访问对象的属性用->符号,和JS区别开来。
    注意两个例子:

    echo 'a' . 222, '<br>';  // a222,后面的数字222会被转换成字符串来运算
    echo 'a' + 222;  // 222
    // 前面的字符串a被转换成数字再运算,由于不是一个合法字符,所以没有数值
    

    判断不相等!=<>
    逻辑与&&和逻辑或||也可以分别用andor标示

  • 函数
    函数的声明同样也会提升,参数视为变量需要用$符号;

    test(123);
    function test($a) {
        echo 'test' . $a;
    }
    

    PHP有很多自带函数,列举几个常见的,详细使用可以查看手册。
    date('Y-m-d H:i:s'); date('今年是Y年');参数中对应的字母会转换为年月日,日分秒,注意Y的大写;
    strlen('abc def') // 7计算字符串长度,空格也算字符串
    截取字符串:

    $str = 'abcdefg';
    echo substr($str, 3); // 从下标为3的字符开始截取到最后,defg
    echo substr($str, 0, 3); // abc,从下标0截取到下标3
    echo substr($str, -3); // efg,用负数表示将最后3个字符裁剪出来
    
  • 常量
    define函数定义常量

    define('a', '字母a');
    echo a;  // 定义好的常量可以直接访问,不用`$`
    // 一些PHP预设好的常量
    echo '当前运行的PHP文件是 ' . __FILE__;
    echo '<br/>当前运行的PHP文件所在目录是 ' . __DIR__;
    echo '<br/>运行这个脚本的PHP程序文件是 ' . PHP_BINARY;
    
  • 超全局变量
    这是JS没有的东西,就是在整个PHP的运行环境的任何地方都能直接访问,无需加global,主要记住三个常用的,都是数组,$_GET, $_POST, $_SERVER,前两个就是获取get和post参数了。

  • 数组
    目前看来PHP里面数组非常重要,像JS里面对象那样键值对存储数据的形式,在PHP里其实也是作为数组存在的。

    // 索引数组
    $arr1 = [1, 2, 'abc'];
    echo $arr1[0]; // 还是下标访问
    // count()函数返回数组有多少个元素
    echo count($arr1);
    // 需要重点注意的是:
    // 如果传入的变量不是数组而是其他的比如字符串,数字,布尔值,那么都会返回1
    // 追加元素
    $arr1[] = 'def';
    // isset()函数检验是否存在该元素
    echo isset($arr1[3]); // 存在 输出1
    echo isset($arr1[4]); // 不存在 不输出
    
    // 关联数组
    // 其实就是键值对的形式,注意
    $arr2 = [
        'name' => '老王',
        'age' => 26,
        6 => 'abc', // 其实用数字作key也是可以的,从规范来讲一般不会这么干
    ];
    echo $arr2['name']; // 和JS里的对象很像了,当然对象更多用.访问属性
    // 多维数组,当然可以无限嵌套下去
    $arr3 = [
        'name' => '老王',
        'children' => [
            'Lucy',
            'Lily'
        ],
        'address' => [
            'city' => '北京',
            'district' => '朝阳区',
            'other' => ['123', '456'],
        ],
    ];
    echo $arr3['children'][0];
    echo $arr3['address']['city'];
    
    // 输出数组可以用print_r()函数
    print_r($arr1);  // Array ( [0] => 1 [1] => 2 [2] => abc [3] => def )
    print_r($arr2); // Array ( [name] => 老王 [age] => 26 [6] => abc )
    // 关联和多维数组直接输出不方便看的话可以这样
    echo '<pre>';
    print_r($arr3);
    echo '</pre>';
    
    // foreach循环数组
    foreach ($arr2 as $value) {
        echo $value . '<br>';
    }
    foreach ($arr2 as $key => $value) {
        echo $key . ' : ' . $value . '<br>';
    }
    foreach ($arr1 as $char) {
        echo $char . '<br>';
    }
    foreach ($arr1 as $num => $char) {
        echo $num . ' : ' . $char . '<br>';
    }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容