1 00:00:00,000 --> 00:00:02,400 [Powered by Google Translate] [PHP语法] 2 00:00:02,400 --> 00:00:04,400 [Tommy MacWilliam的] [哈佛大学] 3 00:00:04,400 --> 00:00:07,400 [这是CS50。] [CS50.TV] 4 00:00:07,400 --> 00:00:10,080 >> 在这段视频中,我们将介绍PHP - 5 00:00:10,080 --> 00:00:12,820 语言之一,我们将使用CS50 6 00:00:12,820 --> 00:00:15,480 作为我们过渡到Web开发。 7 00:00:15,480 --> 00:00:19,250 PHP代表PHP超文本处理器, 8 00:00:19,250 --> 00:00:23,440 或PHP超文本处理器超文本处理器, 9 00:00:23,440 --> 00:00:24,880 我会停在那里。 10 00:00:24,880 --> 00:00:29,280 PHP是一种递归的缩写,我认为这是真正真棒。 11 00:00:29,280 --> 00:00:32,020 >> 所以,让我们写'你好世界“在PHP中, 12 00:00:32,020 --> 00:00:37,240 这将是一个有点不同,比“世界你好”在C,我们来了解和热爱。 13 00:00:37,240 --> 00:00:40,330 而不是创建一个文件名为hello.c, 14 00:00:40,330 --> 00:00:42,990 我们将创建的hello.php。 15 00:00:42,990 --> 00:00:52,430 将包含所有我们的PHP代码<?php和?>之间。 16 00:00:52,430 --> 00:00:56,160 如果我们有任何PHP代码,位于 17 00:00:56,160 --> 00:00:59,140 这些分隔符之外,也不会执行。 18 00:00:59,140 --> 00:01:01,740 我们可以有很多这些PHP块 19 00:01:01,740 --> 00:01:05,090 因为我们希望一个单一的PHP文件内。 20 00:01:05,090 --> 00:01:09,000 在PHP中,没有必要为主要功能。 21 00:01:09,000 --> 00:01:15,540 相反,我们的PHP代码将运行在我们的PHP文件中出现的顺序。 22 00:01:15,540 --> 00:01:20,970 C和PHP有一个'printf的输出数据的功能。 23 00:01:20,970 --> 00:01:27,270 但是在PHP中,我们并不需要像standardIO.h#包括任何头文件。 24 00:01:27,270 --> 00:01:31,830 这是因为在PHP中,我们不会将我们的代码编译。 25 00:01:31,830 --> 00:01:35,560 当我们写C代码,我们的工作流程往往是开放 26 00:01:35,560 --> 00:01:39,560 一个或多个。c或h文件,改变他们,编译它们, 27 00:01:39,560 --> 00:01:41,980 运行生成的二进制文件。 28 00:01:41,980 --> 00:01:45,800 查看更多有关这个过程的编译器的视频。 29 00:01:45,800 --> 00:01:51,480 >> 不像C,PHP是一种解释 - 而不是编译 - 语言。 30 00:01:51,480 --> 00:01:54,080 这意味着,我们的PHP代码写 31 00:01:54,080 --> 00:01:57,360 被称为译员通过一个特殊的程序,运行 32 00:01:57,360 --> 00:02:00,440 这将反过来执行我们的代码。 33 00:02:00,440 --> 00:02:03,020 要运行我们的PHP代码, 34 00:02:03,020 --> 00:02:07,860 我们将发送给它传递给PHP解释器将处理执行, 35 00:02:07,860 --> 00:02:11,260 而不是将它编译为机器代码。 36 00:02:11,260 --> 00:02:13,450 让我们来看看在行动的解释。 37 00:02:13,450 --> 00:02:17,010 我们将打开一个终端,运行PHP命令 38 00:02:17,010 --> 00:02:21,130 其次我们想运行PHP文件的路径。 39 00:02:21,130 --> 00:02:25,690 我们会说,'PHP的hello.php“。 40 00:02:25,690 --> 00:02:30,200 而且我们去。我们的PHP程序的输出。 41 00:02:30,200 --> 00:02:33,460 我们并不需要在所有我们的PHP编译文件。 42 00:02:33,460 --> 00:02:37,280 相反,我们有另一个程序 - PHP解释器 - 43 00:02:37,280 --> 00:02:40,070 执行的源代码,我们写的。 44 00:02:40,070 --> 00:02:43,280 >> PHP可以做的远不止简单的printf。 45 00:02:43,280 --> 00:02:46,490 让我们写一些更复杂的PHP程序。 46 00:02:46,490 --> 00:02:52,240 的语法结构 - 喜欢的话,否则,同时,开关 - 47 00:02:52,240 --> 00:02:55,440 在PHP和C是相同的 48 00:02:55,440 --> 00:03:01,180 就像C,这些结构用括号来划分自己的身体, 49 00:03:01,180 --> 00:03:04,420 就像在C语言中,我们写的每一行 50 00:03:04,420 --> 00:03:06,830 必须以分号结束; 51 00:03:06,830 --> 00:03:10,700 然而,变量的处理方式有点不同,在PHP。 52 00:03:10,700 --> 00:03:15,630 首先,PHP中的所有变量必须开始与美元符号。 53 00:03:15,630 --> 00:03:18,700 这似乎有点怪异的在第一,但你会习惯它。 54 00:03:18,700 --> 00:03:22,150 其次,PHP是一种松散类型的语言 55 00:03:22,150 --> 00:03:24,570 这意味着你不必明确列出 56 00:03:24,570 --> 00:03:27,640 当您创建一个变量的类型。 57 00:03:27,640 --> 00:03:33,430 凡在C,你需要说的诠释x = 5; 58 00:03:33,430 --> 00:03:38,650 或为char y ='A'; 59 00:03:39,250 --> 00:03:44,790 在PHP中,我们可以简单地说$ X = 5; 60 00:03:44,790 --> 00:03:48,930 $ Y ='A';。 61 00:03:48,930 --> 00:03:52,360 这同样适用于函数。 62 00:03:52,360 --> 00:04:01,290 与其说整数的函数f(){我们的函数体}, 63 00:04:01,290 --> 00:04:12,160 在PHP中,我们要去说函数f(){我们的函数体}。 64 00:04:12,160 --> 00:04:17,579 我们并不需要明确指定返回类型的函数f。 65 00:04:17,579 --> 00:04:22,070 在PHP中的功能还没有返回相同的类型 66 00:04:22,070 --> 00:04:23,840 每一次,他们都会被执行。 67 00:04:23,840 --> 00:04:27,940 例如,我们可以编写一个函数,返回false一个错误 68 00:04:27,940 --> 00:04:29,750 和另一种类型,如果它成功。 69 00:04:29,750 --> 00:04:33,060 >> 这也可以帮助我们写更多的通用功能。 70 00:04:33,060 --> 00:04:35,710 例如,我们可以写一个add函数 71 00:04:35,710 --> 00:04:39,200 可以返回一个整数,如果2个整数 72 00:04:39,200 --> 00:04:41,250 或浮点数,如果2辆彩车。 73 00:04:41,250 --> 00:04:45,530 在C中,做到这一点,我们就需要写2个独立的功能。 74 00:04:45,530 --> 00:04:49,230 而在C中我们使用指针为加薪和字符串, 75 00:04:49,230 --> 00:04:52,170 我们将无法在PHP中使用指针。 76 00:04:52,170 --> 00:04:58,030 相反,数组和字符串是内置在PHP中的类型。 77 00:04:58,030 --> 00:04:59,660 他们建立到的语言。 78 00:04:59,660 --> 00:05:02,270 要创建一个数组在PHP中,我们可以说, 79 00:05:02,270 --> 00:05:11,280 $ =阵列(1,2,3); 80 00:05:11,280 --> 00:05:19,400 或更简单地$ = [1,2,3]。 81 00:05:19,400 --> 00:05:24,990 我们可以到这个数组中的索引使用相同的语法,我们已经习惯了从C 82 00:05:24,990 --> 00:05:31,780 为了得到第一个元素,我们会说,$ [0]; 83 00:05:31,780 --> 00:05:36,290 PHP也有关联数组的内置支持。 84 00:05:36,290 --> 00:05:41,460 关联数组就像我们已经看到了哈希表的数据结构 - 85 00:05:41,460 --> 00:05:44,060 他们一键映射到一个值。 86 00:05:44,060 --> 00:05:46,070 >> 让我们来看看一个例子。 87 00:05:46,070 --> 00:06:14,740 我们可以说,美元的员工= [“指导员”=>“大卫”,“TF”=>“汤米”]; 88 00:06:14,740 --> 00:06:21,020 在这里,我有一个关联数组,带2把钥匙 - 教师和TF。 89 00:06:21,020 --> 00:06:24,910 双箭头,等于或大于, 90 00:06:24,910 --> 00:06:29,660 是用来分隔一个键和其相应的值。 91 00:06:29,660 --> 00:06:41,830 因此,人员[“TF”]的值是字符串“汤米”。 92 00:06:41,830 --> 00:06:44,430 一个关联数组的值 - 93 00:06:44,430 --> 00:06:47,540 就像任何其他的阵列 - 可以是任何类型的。 94 00:06:47,540 --> 00:07:23,370 例如,我们可以说,人员= [“导师”=>“大卫”,“TFS”=> [“汤米”,“抢”]; 95 00:07:23,370 --> 00:07:27,810 载入'TFS'的值是一个数组。 96 00:07:27,810 --> 00:07:33,030 这意味着,一个关联数组内的值可以是不同的类型。 97 00:07:33,030 --> 00:07:36,750 >> PHP数组还没有固定的长度, 98 00:07:36,750 --> 00:07:40,200 因此我们可以添加或删除一个数组中的元素。 99 00:07:40,200 --> 00:07:49,130 比方说,我们有一个简单的数组,如$ = [1,2,3]。 100 00:07:49,130 --> 00:07:51,860 要添加一个新元素到这个数组, 101 00:07:51,860 --> 00:07:57,160 我们可以说,一个[] = 4; 102 00:07:57,160 --> 00:08:03,630 现在,我们的阵列由四个要素 - [1,2,3,4]。 103 00:08:03,630 --> 00:08:06,980 回想一下,如果我们想在C做这样的事情, 104 00:08:06,980 --> 00:08:09,610 我们不得不分配一个全新的阵列, 105 00:08:09,610 --> 00:08:12,400 我们的第一个数组的内容复制进去, 106 00:08:12,400 --> 00:08:15,870 然后设置新的数组的最后一个元素到我们的新值。 107 00:08:15,870 --> 00:08:18,390 这是更容易在PHP。 108 00:08:18,390 --> 00:08:21,230 如果我们的数组是一个关联数组, 109 00:08:21,230 --> 00:08:24,810 创建一个元素,我们可以简单地定义一个新的关键 110 00:08:24,810 --> 00:08:26,250 如果它不存在。 111 00:08:26,250 --> 00:08:30,010 如果我们有我们前面的数组 - 员工 - 112 00:08:30,010 --> 00:08:38,679 我们可以说员工[“总”] = 3; 113 00:08:38,679 --> 00:08:43,330 现在我们有一个新的关键的价值3。 114 00:08:43,330 --> 00:08:46,460 >> 要获得在一个数组中的元素数目, 115 00:08:46,460 --> 00:08:48,230 我们可以使用“计数”功能。 116 00:08:48,230 --> 00:08:56,100 如果我们说,数(美元),将有一个价值4。 117 00:08:56,100 --> 00:09:01,930 在PHP中,我们可以创建使用双或单引号的字符串, 118 00:09:01,930 --> 00:09:04,470 所以这两个变量都是字符串。 119 00:09:04,470 --> 00:09:21,780 $ S1 =“字符串”$ S2 ='另一个字符串'; 120 00:09:21,780 --> 00:09:23,920 这两者之间的区别是什么? 121 00:09:23,920 --> 00:09:26,950 嗯,这是很常见的,要包括 122 00:09:26,950 --> 00:09:29,600 一个变量里面的字符串值。 123 00:09:29,600 --> 00:09:34,390 做到这一点的方法之一是使用PHP点操作符, 124 00:09:34,390 --> 00:09:36,630 连接字符串。 125 00:09:36,630 --> 00:09:38,680 我们可以做这样的事情 - 126 00:09:38,680 --> 00:09:53,800 $ N = 5; $ S = n是'$ N;。 127 00:09:53,800 --> 00:09:57,430 在这里,我们的变量n是一个整数。 128 00:09:57,430 --> 00:10:00,020 但是,当我们将它连接字符串, 129 00:10:00,020 --> 00:10:04,110 PHP会自动将其转换为一个字符串我们。 130 00:10:04,110 --> 00:10:09,090 或者,我们可以简单地用双引号把变量转换成字符串本身。 131 00:10:09,090 --> 00:10:19,290 我们可以说,$ S = n是$ N“; 132 00:10:19,290 --> 00:10:24,040 现在的价值将是$ s的n是5'。 133 00:10:24,040 --> 00:10:34,250 如果我们使用单引号代替,在$ s ='N $ N'; 134 00:10:34,250 --> 00:10:39,670 s的值将是'N $ N'; 135 00:10:39,670 --> 00:10:43,720 n的值不会被取代的,如果我们使用单引号, 136 00:10:43,720 --> 00:10:47,150 但如果我们将使用双引号。 137 00:10:47,150 --> 00:10:51,800 如果我们要使用双引号来包含在一个字符串数组的值, 138 00:10:51,800 --> 00:10:55,060 我们需要包括数组,像这样的大括号 - 139 00:10:55,060 --> 00:11:14,470 $ =“{$人员['总']}”; 140 00:11:14,470 --> 00:11:20,350 >> 现在让我们来看看在C中的一个小片段,并把它翻译到PHP。 141 00:11:20,350 --> 00:11:25,410 在这里,我们创建了一个功能,打印出字母的字符串, 142 00:11:25,410 --> 00:11:27,310 每行一个字符。 143 00:11:27,310 --> 00:11:32,250 让我们做同样的事情在PHP。 144 00:11:32,250 --> 00:11:36,530 首先,我们需要我们的PHP的定界符。 145 00:11:36,530 --> 00:11:39,000 当我们创建我们的功能, 146 00:11:39,000 --> 00:11:42,740 我们并不需要指定其返回类型或参数类型。 147 00:11:42,740 --> 00:11:46,890 我们的s变量也必须开始用一个美元符号。 148 00:11:46,890 --> 00:11:51,590 PHP的strlen函数为我们提供了一个字符串的长度, 149 00:11:51,590 --> 00:11:55,660 就像C的strlen的为我们提供了一个字符串的长度。 150 00:11:55,660 --> 00:11:59,060 虽然引擎盖下,这些功能实际上是一个有点不同 151 00:11:59,060 --> 00:12:03,010 因为一个字符串在PHP是一个内置的类型。 152 00:12:03,010 --> 00:12:06,930 我们'for'循环的语法是一样的。 153 00:12:06,930 --> 00:12:13,530 >> 在PHP中,我们还可以使用数组表示法访问字符串中字符。 154 00:12:13,530 --> 00:12:19,350 现在,我们可以使用打印功能打印出每个字母的字符串。 155 00:12:19,350 --> 00:12:23,080 PHP的打印功能,我们不需要担心占位符 - 156 00:12:23,080 --> 00:12:28,200 如%d或%C - 当我们要打印出一个变量,它不是一个字符串。 157 00:12:28,200 --> 00:12:33,590 相反,我们可以简单地通过任何类型的变量打印功能, 158 00:12:33,590 --> 00:12:36,810 ,它会被转换为字符串,并显示出来。 159 00:12:36,810 --> 00:12:43,430 这就是它!现在让我们来运行我们的文件'的PHP print.php“。 160 00:12:43,430 --> 00:12:48,160 还有的输出,我们看到我们的C程序。 161 00:12:48,160 --> 00:12:52,120 >> PHP也支持一个结构叫'的foreach循环。 162 00:12:52,120 --> 00:12:54,800 就像是一个'for'循环'的foreach循环, 163 00:12:54,800 --> 00:12:59,080 但它加入了一点语法糖使事情变得更加可读。 164 00:12:59,080 --> 00:13:03,690 在这里,我们创建了一个新的阵列称为'阵'。 165 00:13:03,690 --> 00:13:10,090 现在我们可以说,即$ number的foreach($阵列), 166 00:13:10,090 --> 00:13:12,390 我们就可以打印出号。 167 00:13:12,390 --> 00:13:20,650 当我们运行这个文件 - ,PHP foreach.php我们可以看到每个号码在自己的行。 168 00:13:20,650 --> 00:13:26,700 >> 当我们写C代码,这是经常组织我们的代码到单独的文件。 169 00:13:26,700 --> 00:13:29,170 在PHP中,我们可以做同样的事情。 170 00:13:29,170 --> 00:13:33,870 比方说,我们有几个函数一个名为math.php中。 171 00:13:33,870 --> 00:13:38,900 如果我想在另一个PHP文件,如Calculator.php中使用这些功能, 172 00:13:38,900 --> 00:13:44,110 我可以使用PHP的require_once()在函数。 173 00:13:44,110 --> 00:13:47,110 Require_once就像#包括。 174 00:13:47,110 --> 00:13:52,050 当给定一个文件的路径,这将基本上是复制和粘贴的内容 175 00:13:52,050 --> 00:13:54,930 该文件到当前文件。 176 00:13:54,930 --> 00:14:00,150 Require_once确保每个文件包含到当前文件中只有一次, 177 00:14:00,150 --> 00:14:05,680 可以是有益的,如果你有一个大集合的PHP文件,要求对方。 178 00:14:05,680 --> 00:14:07,750 让我们来看看一个例子。 179 00:14:07,750 --> 00:14:12,620 在这里,我们有一个功能,我想在另一个文件中使用的集合。 180 00:14:12,620 --> 00:14:14,990 让我们来看看我们如何能够使用它们。 181 00:14:14,990 --> 00:14:20,700 在第3行,我们要求math.php。 182 00:14:20,700 --> 00:14:27,170 “__DIR__”是一种特殊的常数,表示当前目录 183 00:14:27,170 --> 00:14:33,440 ,因为math.php Calculator.php中位于相同的目录中。 184 00:14:33,440 --> 00:14:38,010 我们需要math.php之后,我们可以使用功能 185 00:14:38,010 --> 00:14:41,690  如果我们定义它们Calculator.php中。 186 00:14:41,690 --> 00:14:47,440 让我们运行,这'的PHP Calculator.php中“。太好了! 187 00:14:47,440 --> 00:14:50,880 >> 这是它为我们介绍了PHP的语法。 188 00:14:50,880 --> 00:14:53,700 要了解更多信息,请PHP.net。 189 00:14:53,700 --> 00:14:59,470 PHP有很多内置功能,幸运的是它的文档是真正伟大的。 190 00:14:59,470 --> 00:15:02,680 我的名字是汤米,这是CS50。 191 00:15:02,680 --> 00:15:04,680 [CS50.TV] 192 00:15:04,680 --> 00:15:14,000 >> ...支架,我的房间。该死的!在代码中,我用大词,这是最后的视频。