1 00:00:00,000 --> 00:00:05,340 2 00:00:05,340 --> 00:00:07,370 >> DOUG LLOYD: Vì vậy, chúng tôi đã thực hiện rất nhiều công việc trong C, 3 00:00:07,370 --> 00:00:09,536 và C là một thực sự mát mẻ ngôn ngữ vì nó mang lại cho bạn 4 00:00:09,536 --> 00:00:12,840 khả năng lặn thực sự mức thấp vào các chương trình của bạn. 5 00:00:12,840 --> 00:00:16,810 Chúng tôi nhận được để làm những điều như thực sự là phút thao tác 6 00:00:16,810 --> 00:00:18,800 byte riêng lẻ của bộ nhớ. 7 00:00:18,800 --> 00:00:21,420 Nhớ lại rằng con trỏ thực sự cho phép chúng tôi linh hoạt đó. 8 00:00:21,420 --> 00:00:25,260 >> Nhưng chúng ta luôn luôn cần phải có rằng mức phạt hạt chi tiết 9 00:00:25,260 --> 00:00:26,820 trong các chương trình của chúng tôi? 10 00:00:26,820 --> 00:00:28,210 Có lẽ là không, phải không? 11 00:00:28,210 --> 00:00:30,376 Và nếu chúng ta sẽ có một thương mại-off giữa việc 12 00:00:30,376 --> 00:00:32,911 có thể làm thực sự, thực sự điều phút và thực sự, thực sự 13 00:00:32,911 --> 00:00:35,910 những điều lớn lao mà chúng ta không cần phải suy nghĩ về, chúng ta không cần phải thực hiện 14 00:00:35,910 --> 00:00:40,290 những ý tưởng thực sự lớn, nếu họ đã xây dựng cho chúng ta, 15 00:00:40,290 --> 00:00:43,980 nói chung để xây dựng lớn các chương trình, dự án lớn, 16 00:00:43,980 --> 00:00:49,130 có lẽ chúng ta sẽ phạm sai lầm ở một bên là đã nhiều thứ ngôn ngữ được xây dựng trong 17 00:00:49,130 --> 00:00:51,300 cho chúng ta, thay vì có những thứ ở mức độ thấp. 18 00:00:51,300 --> 00:00:53,970 Và đó là nơi PHP thực sự đến. 19 00:00:53,970 --> 00:00:58,200 >> Bây giờ, một trong những lý do rằng chúng ta dạy PHP ở CS50 20 00:00:58,200 --> 00:01:01,020 được mà nó lấy cảm hứng từ C. Và trên thực tế, theo ý kiến ​​của tôi, 21 00:01:01,020 --> 00:01:05,140 có thực sự hai ngôn ngữ mà tổ tiên 22 00:01:05,140 --> 00:01:08,200 rất phổ biến hiện nay. 23 00:01:08,200 --> 00:01:10,110 C và LISP. 24 00:01:10,110 --> 00:01:13,280 Và họ là ngôn ngữ nguyên bản bởi vì mỗi lập trình hiện đại khác 25 00:01:13,280 --> 00:01:17,380 ngôn ngữ đã phát triển kể từ đó là cảm hứng 26 00:01:17,380 --> 00:01:20,330 bởi một hoặc các cú pháp khác. 27 00:01:20,330 --> 00:01:26,160 PHP là rất tương tự như cú pháp C, trong khi các ngôn ngữ như Đề án, 28 00:01:26,160 --> 00:01:27,900 ví dụ, bạn có thể đã nghe nói, 29 00:01:27,900 --> 00:01:32,070 được lấy cảm hứng từ một ngôn ngữ gọi LISP, mà là một ngôn ngữ trở lên. 30 00:01:32,070 --> 00:01:34,220 >> Vì vậy, lý do chúng tôi dạy PHP trong CS50 là, 31 00:01:34,220 --> 00:01:37,730 bằng cách biết C như cơ bản như bạn làm vào thời điểm này, 32 00:01:37,730 --> 00:01:41,280 chọn lên PHP, mang đến cho bạn khả năng làm những cấp độ cao hơn nhiều 33 00:01:41,280 --> 00:01:44,710 hơn so với C không có gì, không phải là rằng có rất nhiều rào cản, 34 00:01:44,710 --> 00:01:48,230 bởi vì bạn đã có Ý tưởng cơ bản của cú pháp. 35 00:01:48,230 --> 00:01:50,590 C là được khoảng gần 45 năm vào thời điểm này. 36 00:01:50,590 --> 00:01:52,780 PHP là được khoảng 20 năm. 37 00:01:52,780 --> 00:01:57,080 Và trong 25 năm ở giữa, các lập trình viên 38 00:01:57,080 --> 00:02:01,540 xác định rằng họ sẽ nhiều chứ không có khả năng cấp cao hơn, 39 00:02:01,540 --> 00:02:04,970 và những sai lầm và những cuộc đấu tranh trong 20 năm ở giữa 40 00:02:04,970 --> 00:02:08,210 dẫn đến PHP và các ngôn ngữ hiện đại khác. 41 00:02:08,210 --> 00:02:11,039 >> PHP của một lựa chọn tuyệt vời của ngôn ngữ cho phần mềm 42 00:02:11,039 --> 00:02:14,042 rằng allow-- cho phần mềm that-- nơi bạn 43 00:02:14,042 --> 00:02:16,250 cần phải làm những việc mà trong C là thực sự phức tạp. 44 00:02:16,250 --> 00:02:18,480 Vì vậy, ví dụ, làm việc với chuỗi trong C 45 00:02:18,480 --> 00:02:21,709 là rất phức tạp, bởi vì như chúng ta biết, chuỗi trong C 46 00:02:21,709 --> 00:02:23,250 thực sự chỉ là mảng các ký tự. 47 00:02:23,250 --> 00:02:25,230 Nó không phải là một kiểu dữ liệu được xây dựng trong. 48 00:02:25,230 --> 00:02:28,220 Hoặc có lẽ căn bản hơn, một cái gì đó chúng tôi thậm chí không bao gồm trong C, 49 00:02:28,220 --> 00:02:30,360 nếu những gì bạn cần làm một số mạng máy tính? 50 00:02:30,360 --> 00:02:30,860 Được rồi? 51 00:02:30,860 --> 00:02:34,920 >> C có khả năng để làm điều đó, nhưng nó là như vậy phức tạp và rất khó khăn để thực sự làm. 52 00:02:34,920 --> 00:02:37,580 Nó sẽ không được tốt đẹp nếu ngôn ngữ có một built-in, cách dễ dàng 53 00:02:37,580 --> 00:02:38,910 để thực hiện kết nối mạng? 54 00:02:38,910 --> 00:02:43,420 Và PHP là một ngôn ngữ mà làm cho rằng, hoặc tạo điều kiện cho rằng, khá hơn một chút. 55 00:02:43,420 --> 00:02:47,740 Như tôi đã nói, PHP là rất nặng nề đầy cảm hứng bởi C. Cú pháp là rất tương tự. 56 00:02:47,740 --> 00:02:51,760 Và do đó, nó hy vọng sẽ làm cho các quá trình chuyển đổi từ một đến khác 57 00:02:51,760 --> 00:02:54,710 một chút nhẹ nhàng hơn so với một số các ngôn ngữ khác có thể được. 58 00:02:54,710 --> 00:02:58,800 >> Để bắt đầu viết PHP, chỉ cần mở lên một tập tin với phần mở rộng file .php. 59 00:02:58,800 --> 00:03:00,670 Về mặt kỹ thuật này không phải là thực sự cần thiết, 60 00:03:00,670 --> 00:03:04,495 nhưng nếu bạn muốn những thứ như cú pháp nổi bật trong IDE, vì vậy loại đó 61 00:03:04,495 --> 00:03:07,620 tên, hoặc tên biến, chức năng, Bạn có biết, các từ khóa của ngôn ngữ 62 00:03:07,620 --> 00:03:10,090 được nhấn mạnh trong một màu sắc cụ thể, bạn thường 63 00:03:10,090 --> 00:03:14,020 muốn đặt tên cho tập tin của bạn với một tập tin mở rộng cụ thể. 64 00:03:14,020 --> 00:03:18,430 Vì vậy, chúng tôi đã đặt tên tập tin của chúng tôi với một .php mở rộng, nhưng sau đó cũng với PHP, 65 00:03:18,430 --> 00:03:23,310 tất cả các mã PHP, chúng tôi viết trong đó File này phải được kèm theo trong các PHP 66 00:03:23,310 --> 00:03:25,190 phân cách chúng ta nhìn thấy đây trên màn hình. 67 00:03:25,190 --> 00:03:27,910 Khung góc php? Để bắt đầu. 68 00:03:27,910 --> 00:03:30,860 Sau đó chúng tôi viết tất cả các PHP của chúng tôi mã mà chúng tôi muốn ở giữa. 69 00:03:30,860 --> 00:03:32,260 Và sau đó ? 70 00:03:32,260 --> 00:03:34,710 khung góc đóng. 71 00:03:34,710 --> 00:03:37,170 >> Nếu chúng ta không làm được điều này, sau đó điều gì sẽ xảy ra? 72 00:03:37,170 --> 00:03:38,170 Nó sẽ không sụp đổ. 73 00:03:38,170 --> 00:03:39,410 Nó không phải đi làm thực sự làm hỏng chương trình của chúng tôi. 74 00:03:39,410 --> 00:03:41,440 Nhưng nó sẽ không có các hiệu ứng mà chúng ta muốn. 75 00:03:41,440 --> 00:03:44,540 Chuyện gì sẽ xảy ra, thực sự, là rằng khi chúng ta cố gắng và chạy chương trình này, 76 00:03:44,540 --> 00:03:50,330 tất cả mọi thứ không phải giữa các ký tự phân cách sẽ được in ra đúng nguyên văn. 77 00:03:50,330 --> 00:03:52,210 Nó không phải đi làm thực thi mã, 78 00:03:52,210 --> 00:03:56,010 nó sẽ chỉ in ra đúng nguyên văn. 79 00:03:56,010 --> 00:03:57,320 >> Bây giờ tại sao lại là trường hợp? 80 00:03:57,320 --> 00:04:00,416 Vì vậy, C là những gì được biết như là một ngôn ngữ biên dịch. 81 00:04:00,416 --> 00:04:03,040 Bạn có thể quen với các bước làm cho chương trình của bạn, 82 00:04:03,040 --> 00:04:07,820 chuyển các file .c và tập tin h vào một thực thi với make, 83 00:04:07,820 --> 00:04:11,130 đặc biệt sử dụng Clang như trình biên dịch của chúng tôi. 84 00:04:11,130 --> 00:04:13,030 PHP, mặc dù, không có tương đương này. 85 00:04:13,030 --> 00:04:15,600 PHP là những gì được gọi là một ngôn ngữ giải thích. 86 00:04:15,600 --> 00:04:16,760 Và điều đó có nghĩa là gì? 87 00:04:16,760 --> 00:04:20,680 >> Vâng, nó có nghĩa là chúng ta không cần phải chuyển đổi mã nguồn của chúng tôi để số không và những người thân 88 00:04:20,680 --> 00:04:21,470 trước. 89 00:04:21,470 --> 00:04:23,900 Thay vào đó, có một chương trình, mà cũng được gọi là 90 00:04:23,900 --> 00:04:29,771 PHP, mà hiểu PHP và loại có thể làm cho nó trên bay. 91 00:04:29,771 --> 00:04:32,520 Đó là không thực sự chính xác chính xác, nhưng đó là một sự tương tự khá tốt 92 00:04:32,520 --> 00:04:33,760 về những gì đang xảy ra. 93 00:04:33,760 --> 00:04:37,230 Nó giải thích những zero và những người trên bay. 94 00:04:37,230 --> 00:04:40,160 Và vì vậy nếu nó không biết làm thế nào để xử lý một cái gì đó, 95 00:04:40,160 --> 00:04:42,800 nếu nó không biết làm thế nào để Quá trình PHP, bạn có thể 96 00:04:42,800 --> 00:04:44,680 muốn đưa văn bản mà trong đó, phải không? 97 00:04:44,680 --> 00:04:48,960 >> Có thể bạn muốn đặt mã trong ở đó, ngay cả khi nó không phải giữa PHP-- 98 00:04:48,960 --> 00:04:50,035 các dấu PHP. 99 00:04:50,035 --> 00:04:51,910 But-- vì vậy nó không đi để xóa nó cho bạn, 100 00:04:51,910 --> 00:04:53,576 nó chỉ cần đi để về cơ bản loại bỏ nó. 101 00:04:53,576 --> 00:04:55,550 Vì vậy, nó sẽ in nó ra màn hình. 102 00:04:55,550 --> 00:04:57,150 >> Điều này có vẻ như đó là một xấu điều, nhưng thực sự nó là 103 00:04:57,150 --> 00:04:58,220 sẽ là một thực sự điều tốt, như chúng ta sẽ 104 00:04:58,220 --> 00:05:00,390 nhìn thấy khi chúng ta nói về PHP phát triển web, 105 00:05:00,390 --> 00:05:04,010 bởi vì nó có nghĩa là chúng ta có thể vãi ra PHP và HTML. 106 00:05:04,010 --> 00:05:06,640 Chúng tôi có thể sử dụng chúng với nhau để tạo ra một trang web năng động hơn. 107 00:05:06,640 --> 00:05:10,650 Nhưng thêm vào đó trong các Video về phát triển web PHP. 108 00:05:10,650 --> 00:05:12,021 >> Vì vậy, cú pháp của PHP là gì? 109 00:05:12,021 --> 00:05:13,520 Đó là những gì bộ phim này là tất cả về. 110 00:05:13,520 --> 00:05:14,850 Chúng ta hãy nói về nó. 111 00:05:14,850 --> 00:05:16,490 >> Vì vậy, để bắt đầu ra, các biến. 112 00:05:16,490 --> 00:05:18,030 Các biến PHP tồn tại. 113 00:05:18,030 --> 00:05:20,067 Có hai lớn sự khác biệt từ C. 114 00:05:20,067 --> 00:05:21,900 Việc đầu tiên là có không có loại specifier. 115 00:05:21,900 --> 00:05:24,245 Chúng tôi không cần phải nói int, char, float, tất cả những thứ đó. 116 00:05:24,245 --> 00:05:25,620 Chúng tôi không cần phải làm điều đó nữa. 117 00:05:25,620 --> 00:05:26,810 PHP là một ngôn ngữ hiện đại. 118 00:05:26,810 --> 00:05:28,910 Nó có thể tìm ra những gì bạn đang cố gắng làm hoặc làm cho một tốt nhất 119 00:05:28,910 --> 00:05:30,451 đoán như những gì bạn đang cố gắng để làm. 120 00:05:30,451 --> 00:05:31,700 Vì vậy, đó là khá tốt đẹp. 121 00:05:31,700 --> 00:05:35,330 >> Điều khác là tất cả các biến tên phải bắt đầu với một dấu đô la. 122 00:05:35,330 --> 00:05:36,940 Đó chỉ là một cái gì đó để làm quen. 123 00:05:36,940 --> 00:05:39,496 Đó là một chút lạ, bởi vì nó là như vậy mà PHP có thể hiểu 124 00:05:39,496 --> 00:05:40,870 những gì là một biến và những gì không. 125 00:05:40,870 --> 00:05:43,340 Vì vậy, mỗi tên biến bắt đầu với một dấu đô la. 126 00:05:43,340 --> 00:05:46,884 Vì vậy, trong C, có thể nói điều gì đó như thế này, int x = 54. 127 00:05:46,884 --> 00:05:48,550 Chúng tôi không cần phải làm điều đó nữa trong PHP. 128 00:05:48,550 --> 00:05:52,540 Chúng tôi chỉ có thể nói rằng $ x = 54. 129 00:05:52,540 --> 00:05:55,920 Và chúng ta có thể nói, ví dụ, trong C, nếu chúng ta đã lb-bao gồm các h CS50 130 00:05:55,920 --> 00:06:00,314 tập tin tiêu đề, chúng ta có thể nói cụm từ string = "Đây là CS50." 131 00:06:00,314 --> 00:06:01,980 Chúng tôi không cần phải làm điều đó trong PHP, mặc dù. 132 00:06:01,980 --> 00:06:04,865 Chúng tôi chỉ có thể nói $ cụm từ = "Đây là CS50." 133 00:06:04,865 --> 00:06:08,760 Và trên thực tế, chuỗi tại là một kiểu dữ liệu tích hợp sẵn trong PHP, 134 00:06:08,760 --> 00:06:10,950 hay đúng hơn PHP hiểu những gì là một chuỗi. 135 00:06:10,950 --> 00:06:15,612 Nó tách biệt với một mảng của nhân vật như nó là trong C. 136 00:06:15,612 --> 00:06:17,570 Tất cả các yêu thích của bạn câu điều kiện từ C 137 00:06:17,570 --> 00:06:19,520 vẫn có sẵn để bạn có thể sử dụng. 138 00:06:19,520 --> 00:06:21,140 Vì vậy, không có sự chuyển đổi lớn ở đó. 139 00:06:21,140 --> 00:06:23,400 Chúng tôi có thể say-- chúng ta có thể có nếu phát biểu như thế này. 140 00:06:23,400 --> 00:06:28,210 nếu $ y 43, hoặc $ z = 15. 141 00:06:28,210 --> 00:06:29,690 Vì vậy, đó là khá đơn giản. 142 00:06:29,690 --> 00:06:31,980 Chúng ta có thể có nếu và khác. 143 00:06:31,980 --> 00:06:34,210 Chúng ta có thể có nếu và nếu người nào khác. 144 00:06:34,210 --> 00:06:36,430 >> Và nhận thấy một cái gì đó khá tốt đẹp ở đây, và điều này 145 00:06:36,430 --> 00:06:39,620 là sắp xếp của một trong những lợi thế của PHP so với C, thông báo 146 00:06:39,620 --> 00:06:41,510 chức năng gì chúng ta không sử dụng ở đây? 147 00:06:41,510 --> 00:06:47,737 Chúng tôi đang sử dụng == để so sánh biến, $ name, với một chuỗi. 148 00:06:47,737 --> 00:06:49,070 Chúng tôi không thể làm điều đó trong C, phải không? 149 00:06:49,070 --> 00:06:53,200 Chúng tôi đã phải sử dụng một chức năng gọi là StrComp hoặc StrEndComp hoặc bất kỳ 150 00:06:53,200 --> 00:06:54,840 người anh em họ liên quan của nó. 151 00:06:54,840 --> 00:06:56,980 >> Và như vậy đã, chúng ta thấy những lợi thế này. 152 00:06:56,980 --> 00:07:00,930 Chúng tôi không có làm điều gì đó như ngớ ngẩn hoặc có lẽ unintuitive 153 00:07:00,930 --> 00:07:03,540 như gọi một chức năng gọi là StrComp nếu tôi chỉ muốn thử nghiệm 154 00:07:03,540 --> 00:07:05,237 cho dù một giá trị bằng một chuỗi. 155 00:07:05,237 --> 00:07:07,820 Tôi chỉ có thể sử dụng bằng bình đẳng, như tôi có thể làm bất cứ điều gì khác. 156 00:07:07,820 --> 00:07:09,560 Vì vậy, có một lợi thế. 157 00:07:09,560 --> 00:07:13,350 >> Đôi khi, bằng cách này, có lẽ bạn thấy gì khác nếu như một từ, elseif. 158 00:07:13,350 --> 00:07:14,910 Và đó là OK trong PHP là tốt. 159 00:07:14,910 --> 00:07:17,020 Vì vậy, đôi khi bạn có thể thấy điều đó. 160 00:07:17,020 --> 00:07:17,790 Nó không phải là một lỗi đánh máy. 161 00:07:17,790 --> 00:07:21,830 PHP thực sự hiểu elseif. 162 00:07:21,830 --> 00:07:23,980 Tôi không biết tại sao họ quyết định để thực hiện điều đó, 163 00:07:23,980 --> 00:07:28,220 nhưng như chúng ta đã thấy nhiều lần suốt video của chúng tôi cho đến nay, 164 00:07:28,220 --> 00:07:30,460 chúng tôi lập trình yêu nó nếu chúng ta có thể làm mọi thứ một cách nhanh chóng, 165 00:07:30,460 --> 00:07:33,660 vì vậy việc thoát khỏi không gian đó rõ ràng là một lợi thế lớn. 166 00:07:33,660 --> 00:07:34,800 >> Vì vậy, đó là nếu và elseif. 167 00:07:34,800 --> 00:07:37,540 Chúng tôi cũng có những hành bậc ba, thu hồi dấu hỏi chấm, 168 00:07:37,540 --> 00:07:43,262 cho hình thức thực sự ngắn nếu người nào khác hoặc có điều kiện phân nhánh. 169 00:07:43,262 --> 00:07:45,470 Và rõ ràng, trong việc này, những gì chúng tôi đang cố gắng để làm ở đây 170 00:07:45,470 --> 00:07:49,720 được gán cho biến thư $ hoặc là đúng hay sai, 171 00:07:49,720 --> 00:07:54,110 tùy thuộc vào việc $ var là một ký tự chữ cái. 172 00:07:54,110 --> 00:07:57,320 Vì vậy, điều này là khá tương tự như isalpha mà chúng ta đã quen thuộc với từ C. 173 00:07:57,320 --> 00:07:59,010 Đây là loại tương đương trong PHP. 174 00:07:59,010 --> 00:08:01,550 Các chức năng rõ ràng gọi ctype_alpha, 175 00:08:01,550 --> 00:08:03,450 nhưng đó là cách chúng tôi làm điều đó trong PHP. 176 00:08:03,450 --> 00:08:08,560 Vì vậy, tất cả điều này là có được được, nếu $ var là một lá thư, $ thư là đúng. 177 00:08:08,560 --> 00:08:13,820 Nếu $ var không phải là một lá thư, $ thư là sai. 178 00:08:13,820 --> 00:08:15,820 >> Chúng tôi cũng có báo cáo chuyển đổi vẫn còn. 179 00:08:15,820 --> 00:08:17,870 Chúng ta nhớ lại những từ C là tốt. 180 00:08:17,870 --> 00:08:22,480 Ở phía trên đó, đó là cách chúng tôi làm một cái gì đó như get int hoặc nhận được chuỗi. 181 00:08:22,480 --> 00:08:23,845 Vì vậy, PHP có mà được xây dựng trong. 182 00:08:23,845 --> 00:08:25,470 Chúng tôi không cần các thư viện CS50 nữa. 183 00:08:25,470 --> 00:08:27,237 Chúng tôi chỉ có thể sử dụng chức năng readline. 184 00:08:27,237 --> 00:08:29,820 In gì đó là sẽ làm là ra thông điệp, "nhà nước của bạn, 185 00:08:29,820 --> 00:08:33,820 xin vui lòng ", và sau đó nhấp nháy nhanh chóng chờ đợi cho người dùng nhập vào 186 00:08:33,820 --> 00:08:34,739 một số thông tin. 187 00:08:34,739 --> 00:08:36,530 Bây giờ nhận thấy điều gì khác chúng ta có thể làm gì với switch. 188 00:08:36,530 --> 00:08:39,105 Nếu bạn đã sử dụng nó trước, bạn có thể nhớ lại rằng switch 189 00:08:39,105 --> 00:08:44,960 được giới hạn khá nhiều đến số nguyên và nhân vật, nhưng bây giờ chúng ta có thể sử dụng dây. 190 00:08:44,960 --> 00:08:50,190 Và trên thực tế, câu lệnh switch trong PHP là linh hoạt hơn một chút 191 00:08:50,190 --> 00:08:54,880 hơn người anh em họ của nó từ C. 192 00:08:54,880 --> 00:08:55,380 Bản lề. 193 00:08:55,380 --> 00:08:58,130 Cũng giống như điều kiện, tất cả các yêu thích cũ của bạn vẫn còn ở đó. 194 00:08:58,130 --> 00:09:00,740 Chúng tôi có trong khi vòng mà đếm 1-100 trong trường hợp này. 195 00:09:00,740 --> 00:09:03,940 Chúng tôi đã làm trong khi vòng mà đếm từ 1 đến 100, 196 00:09:03,940 --> 00:09:06,200 và chúng tôi có cho vòng mà đếm từ 1 đến 100. 197 00:09:06,200 --> 00:09:07,220 Vì vậy, không có bước nhảy vọt lớn ở đó. 198 00:09:07,220 --> 00:09:09,360 Cú pháp là khá nhiều giống hệt nhau, 199 00:09:09,360 --> 00:09:11,760 ngoại trừ bây giờ chúng tôi đang sử dụng đồng USD biến dấu hiệu thay vì 200 00:09:11,760 --> 00:09:17,260 khai báo các biến số nguyên hoặc một cái gì đó như thế cho các quầy của chúng tôi. 201 00:09:17,260 --> 00:09:20,090 >> Đây là nơi mà mọi thứ có được một tốt hơn rất nhiều so với C, mặc dù. 202 00:09:20,090 --> 00:09:21,020 Mảng. 203 00:09:21,020 --> 00:09:23,020 Vì vậy, nhớ lại khi chúng tôi nói về C, để 204 00:09:23,020 --> 00:09:25,560 để chúng tôi phát triển và co bộ thông tin, 205 00:09:25,560 --> 00:09:28,310 chúng tôi cần phải sắp xếp các mặc định ý tưởng này của một danh sách liên kết, 206 00:09:28,310 --> 00:09:30,780 vì mảng C đã được cố định trong kích thước. 207 00:09:30,780 --> 00:09:31,800 Chúng tôi không thể thu nhỏ chúng. 208 00:09:31,800 --> 00:09:32,930 Chúng ta không thể trồng chúng. 209 00:09:32,930 --> 00:09:36,074 Chúng tôi đã phải tái phân bổ bộ nhớ và làm tất cả sự điên rồ này 210 00:09:36,074 --> 00:09:38,490 hoặc sử dụng danh sách liên kết, trong đó đưa ra một không gian khá chút. 211 00:09:38,490 --> 00:09:41,590 Nhưng trong PHP, mảng là không cố định về kích thước nữa. 212 00:09:41,590 --> 00:09:43,240 Họ có thể phát triển và họ có thể thu nhỏ. 213 00:09:43,240 --> 00:09:46,660 Vì vậy, một lần nữa, những 20 năm tồn tại giữa các phiên bản đầu tiên của C 214 00:09:46,660 --> 00:09:49,440 và lần đầu tiên phát hành PHP, chúng tôi quyết định rằng, bạn đã biết, 215 00:09:49,440 --> 00:09:51,670 nó sẽ thực sự tuyệt vời nếu chúng ta có thể làm điều này. 216 00:09:51,670 --> 00:09:54,100 Và vì vậy chúng tôi thực hiện điều này. 217 00:09:54,100 --> 00:09:58,040 >> Vì vậy, các mảng PHP không cố định trong kích thước, và vì PHP không thực sự 218 00:09:58,040 --> 00:10:03,090 có lập trình front-ốp khái niệm về các loại, 219 00:10:03,090 --> 00:10:05,110 chúng ta có thể kết hợp nhiều loại dữ liệu trong mảng của chúng tôi, quá. 220 00:10:05,110 --> 00:10:08,100 Vì vậy, chúng tôi thậm chí không cần phải sử dụng tất cả số nguyên hoặc tất cả các điểm nổi, 221 00:10:08,100 --> 00:10:12,826 chúng ta có thể có một kết hợp của tất cả các loại khác nhau trong một mảng duy nhất. 222 00:10:12,826 --> 00:10:14,700 Khai báo một mảng là khá đơn giản. 223 00:10:14,700 --> 00:10:16,116 Nó cũng giống như bất kỳ biến khác. 224 00:10:16,116 --> 00:10:20,020 $ nums = array (1, 2, 3, 4), mảng là một chức năng 225 00:10:20,020 --> 00:10:22,760 đó là xây dựng vào PHP sẽ tạo ra một mảng cho bạn. 226 00:10:22,760 --> 00:10:28,315 Điều này tạo ra một mảng của bốn giá trị, số trong trường hợp này, được gọi là $ nums. 227 00:10:28,315 --> 00:10:29,940 Và có nhiều hơn một cách để làm điều đó. 228 00:10:29,940 --> 00:10:32,420 Và chúng ta sẽ thấy điều này rất nhiều trong PHP. 229 00:10:32,420 --> 00:10:36,380 PHP đã được phát triển bởi nhiều khác nhau người dân và phát triển và tăng trưởng và phát triển. 230 00:10:36,380 --> 00:10:40,050 Có thường không phải chỉ hai hoặc ba cách để làm một cái gì đó trong PHP, 231 00:10:40,050 --> 00:10:42,170 có thường như 10 hoặc 20. 232 00:10:42,170 --> 00:10:45,300 Dưới đây là chỉ là một phổ biến Cách khai báo một mảng. 233 00:10:45,300 --> 00:10:48,310 $ nums = vuông khung 1, 2, 3, 4. 234 00:10:48,310 --> 00:10:53,170 Vì vậy, đây là loại tương tự như góc C của br-- ký hiệu ngoặc móc, thay. $ - 235 00:10:53,170 --> 00:10:58,525 hoặc nó sẽ là int nums vuông khung bằng ngoặc móc 1, 2, 3, 4. 236 00:10:58,525 --> 00:11:02,710 Trong PHP đó là $ nums = vuông khung 1, 2, 3, 4. 237 00:11:02,710 --> 00:11:08,920 Nhưng cả hai ví dụ ở đây cho tôi một mảng của bốn trong trường hợp này là số nguyên. 238 00:11:08,920 --> 00:11:10,920 >> Nếu tôi muốn gì để tack một cái gì đó vào lúc này? 239 00:11:10,920 --> 00:11:14,760 Vâng, tôi chỉ có thể nói $ nums 4, một lần nữa, chúng tôi vẫn đang đếm từ 0 ở đây 240 00:11:14,760 --> 00:11:17,800 trong PHP, sẽ là thứ năm phần tử của mảng. 241 00:11:17,800 --> 00:11:18,990 Tôi chỉ có thể nói rằng. 242 00:11:18,990 --> 00:11:22,860 Tôi sẽ không phải chịu đựng một seg lỗi, vì mảng của tôi chỉ là 243 00:11:22,860 --> 00:11:24,337 sẽ phát triển để phục vụ đó. 244 00:11:24,337 --> 00:11:25,420 Đó là khá tốt đẹp, phải không? 245 00:11:25,420 --> 00:11:28,400 Và trong thực tế, tôi thậm chí không cần phải xác định được nơi tôi muốn đặt nó. 246 00:11:28,400 --> 00:11:31,220 Tôi chỉ có thể nói điều này và chỉ tack nó phải vào đến cùng, 247 00:11:31,220 --> 00:11:34,099 hoặc tôi có thể thậm chí chỉ nói $ nums 20 hoặc 1000. 248 00:11:34,099 --> 00:11:35,140 Nó không thực sự quan trọng. 249 00:11:35,140 --> 00:11:38,330 Nó vẫn chỉ là đi để tack nó phải vào đến cùng. 250 00:11:38,330 --> 00:11:41,490 >> Vì vậy, tôi có thể phát triển, và as-- chúng tôi sẽ không bao gồm nó ở đây, 251 00:11:41,490 --> 00:11:45,360 nhưng tôi có thể ghép hoặc dải các yếu tố ra khỏi mảng là tốt, 252 00:11:45,360 --> 00:11:50,064 và mảng sẽ co lại để chứa mà bây giờ thiếu hoặc không gian trống rỗng. 253 00:11:50,064 --> 00:11:52,230 Có một cách khác để tack một cái gì đó vào một mảng, 254 00:11:52,230 --> 00:11:54,330 mà là một chức năng gọi là array_push. 255 00:11:54,330 --> 00:11:57,860 Vì vậy, một lần nữa, chỉ là ý tưởng này là khả năng làm việc theo nhiều cách khác nhau. 256 00:11:57,860 --> 00:12:01,950 Vì vậy, chúng tôi đã nhìn thấy ba cách khác nhau bây giờ tack yếu tố khác vào một mảng. 257 00:12:01,950 --> 00:12:06,900 Vì vậy, này cho biết thêm một yếu tố khác đến cuối của mảng $ nums. 258 00:12:06,900 --> 00:12:08,340 Và chúng ta có thể trộn lẫn các loại dữ liệu của chúng tôi. 259 00:12:08,340 --> 00:12:13,110 Vì vậy, tôi có thể có một mảng của không 1, 2, 3, 4, nhưng 1, true, 3, 4, 260 00:12:13,110 --> 00:12:16,420 nơi thực sự là một Boolean, và sau đó nếu tôi muốn tack vào các yếu tố khác 261 00:12:16,420 --> 00:12:20,860 vào mảng đó, có lẽ là một chuỗi, chuỗi "năm", tôi có thể làm điều đó. 262 00:12:20,860 --> 00:12:26,110 Và bây giờ mảng của tôi sẽ là 1, true, 3, 4, năm. 263 00:12:26,110 --> 00:12:28,640 Từ năm, không phải là nguyên 5. 264 00:12:28,640 --> 00:12:31,270 Vì vậy, rất nhiều sự linh hoạt đó. 265 00:12:31,270 --> 00:12:33,290 >> Sự linh hoạt được thậm chí tốt hơn, mặc dù, 266 00:12:33,290 --> 00:12:37,530 vì PHP đã hỗ trợ cho một cái gì đó được gọi là một mảng kết hợp. 267 00:12:37,530 --> 00:12:40,660 Và chúng tôi loại mơ hồ nói mảng về liên kết trong C 268 00:12:40,660 --> 00:12:44,740 trong bối cảnh của bảng băm, vì những gì các mảng kết hợp thực sự tất cả 269 00:12:44,740 --> 00:12:48,950 về đang làm cho chính ánh xạ cặp giá trị. 270 00:12:48,950 --> 00:12:53,410 Và trong trường hợp này, nếu keys-- chúng ta đã quen thuộc với mảng từ C, 271 00:12:53,410 --> 00:12:55,440 các phím số index. 272 00:12:55,440 --> 00:12:57,530 0, 1, 2, 3. 273 00:12:57,530 --> 00:13:03,070 Và các giá trị là những gì chúng ta thấy rằng 0 mảng, mảng 1, array 2, và như vậy. 274 00:13:03,070 --> 00:13:06,310 Vì vậy, các phím được lập chỉ mục, và các giá trị là 275 00:13:06,310 --> 00:13:10,060 những gì có trong đó vị trí mảng, quy định bởi chỉ số đó. 276 00:13:10,060 --> 00:13:15,130 >> Nhưng trong PHP, chúng ta không cần phải làm điều này khái niệm về mảng 0, 1 mảng, mảng 2 277 00:13:15,130 --> 00:13:15,830 nữa không. 278 00:13:15,830 --> 00:13:21,025 Bây giờ chúng ta có thể sử dụng từ thực tế để ánh xạ những phím với các giá trị. 279 00:13:21,025 --> 00:13:22,650 Và vì vậy tôi có thể nói điều gì đó như thế này. 280 00:13:22,650 --> 00:13:26,710 Tôi có thể tạo ra một mảng bằng cách sử dụng cú pháp khung vuông như sau. 281 00:13:26,710 --> 00:13:30,685 $ pizza = khung vuông "cheese" và sau đó 282 00:13:30,685 --> 00:13:37,210 loại này đôi mũi tên ký hiệu, 8,99 ", pepperoni," mũi tên 10.99-- 9,99, 283 00:13:37,210 --> 00:13:37,880 và như vậy. 284 00:13:37,880 --> 00:13:39,060 Và vì vậy những gì đang xảy ra ở đây? 285 00:13:39,060 --> 00:13:41,040 Tôi thực sự làm những gì? 286 00:13:41,040 --> 00:13:43,990 Tôi đang tạo ra các ánh xạ cặp giá trị quan trọng. 287 00:13:43,990 --> 00:13:49,060 Vì vậy, thay vì nói, ví dụ, pizza 0, 1 miếng, pizza 2, 288 00:13:49,060 --> 00:13:52,350 Tôi bây giờ có thể nói pizza phô mai, pizza pepperoni, 289 00:13:52,350 --> 00:13:55,120 và tham khảo các giá trị liên kết với chúng. 290 00:13:55,120 --> 00:13:56,970 >> Vì vậy, đây là chìa khóa của chúng tôi trong màu xanh lá cây. 291 00:13:56,970 --> 00:13:59,870 Cheese, pepperoni, rau, thịt gà trâu. 292 00:13:59,870 --> 00:14:04,200 Dưới đây là mũi tên mà làm cho chìa khóa cặp giá trị bản đồ này. 293 00:14:04,200 --> 00:14:07,420 Và sau đó ở đây là những giá trị tại vị trí đó mảng. 294 00:14:07,420 --> 00:14:10,330 Vì vậy, nó giống như nói rằng mảng 0 bằng 8,99. 295 00:14:10,330 --> 00:14:11,720 Điều quan trọng là 0. 296 00:14:11,720 --> 00:14:13,600 Các giá trị là 8,99. 297 00:14:13,600 --> 00:14:19,370 Tôi bây giờ có thể nói mảng pho mát, hoặc trong này trường hợp pizza pho mát, pho mát là chìa khóa, 298 00:14:19,370 --> 00:14:23,340 và những gì tôi tìm thấy ở pizza pho mát này là 8,99. 299 00:14:23,340 --> 00:14:25,540 Đó là giá trị mà tôi tìm thấy ở đó. 300 00:14:25,540 --> 00:14:28,124 >> Vì vậy, tôi có thể nói những điều như thế. $ bánh pizza pho mát = 7,99. 301 00:14:28,124 --> 00:14:29,040 Nói rằng tôi đang gặp một bán. 302 00:14:29,040 --> 00:14:31,750 Tôi muốn dis-- Tôi muốn thả giá của bánh pizza pho mát. 303 00:14:31,750 --> 00:14:35,620 Hoặc tôi có thể sử dụng các loại rau bánh pizza như một phần của một điều kiện, 304 00:14:35,620 --> 00:14:39,990 hoặc tôi có thể thêm một yếu tố mới để tôi mảng, giống như tôi có thể làm trước đây. 305 00:14:39,990 --> 00:14:44,680 Tôi có thể thêm một yếu tố mới này mảng kết hợp với phím "bacon" 306 00:14:44,680 --> 00:14:49,250 và giá trị 13.49. 307 00:14:49,250 --> 00:14:53,820 >> Nhưng loại này giới thiệu một vấn đề, nếu bạn nghĩ về nó cho một thứ hai. 308 00:14:53,820 --> 00:14:55,721 Làm thế nào chúng ta sẽ lặp qua mảng này? 309 00:14:55,721 --> 00:14:56,220 Bên phải? 310 00:14:56,220 --> 00:14:59,820 Trong C, chúng ta sẽ chỉ có một cho vòng lặp, thông thường, mà 311 00:14:59,820 --> 00:15:03,650 sẽ chạy từ 0 đến kích thước của mảng trừ đi 1. 312 00:15:03,650 --> 00:15:08,060 Các mảng có n phần tử trong lúc, các chỉ số hợp lệ là 0 đến n trừ đi 1. 313 00:15:08,060 --> 00:15:11,530 Vì vậy, chúng ta có thể sử dụng vòng lặp for bước qua mọi yếu tố duy nhất. 314 00:15:11,530 --> 00:15:13,530 >> Nhưng đó không phải là thực sự trường hợp nữa, phải không? 315 00:15:13,530 --> 00:15:17,360 Bây giờ mà chúng tôi có một cặp giá trị key ánh xạ nơi các phím là những từ, 316 00:15:17,360 --> 00:15:19,970 làm thế nào để chúng ta lặp qua tất cả các từ? 317 00:15:19,970 --> 00:15:22,420 Vâng, may mắn thay, PHP có một cách để đối phó với điều này quá, 318 00:15:22,420 --> 00:15:24,580 và vì vậy chúng ta sẽ nhảy để vòng một giây 319 00:15:24,580 --> 00:15:30,780 để giới thiệu một loại thứ tư của vòng lặp tồn tại trong PHP gọi là vòng lặp foreach. 320 00:15:30,780 --> 00:15:34,430 Và những gì một vòng lặp foreach, không có gì nó về cơ bản các ý tưởng tương tự. 321 00:15:34,430 --> 00:15:36,060 Bạn có thể sử dụng nó cho bất kỳ loại mảng. 322 00:15:36,060 --> 00:15:38,100 Nhưng đó là về cơ bản cùng một ý tưởng như một vòng lặp for, 323 00:15:38,100 --> 00:15:40,750 ngoại trừ thay vì sử dụng số chỉ mục, bạn chỉ 324 00:15:40,750 --> 00:15:45,830 có cú pháp này lạ nơi bạn gọi mọi phần tử duy nhất 325 00:15:45,830 --> 00:15:47,550 tên cho các mục đích của vòng lặp này. 326 00:15:47,550 --> 00:15:49,258 >> Vì vậy, trong trường hợp này, foreach ($ mảng như $ key). 327 00:15:49,258 --> 00:15:52,900 328 00:15:52,900 --> 00:15:56,450 Về cơ bản, như nhận xét đó ghi chú, bên trong đó vòng lặp foreach, 329 00:15:56,450 --> 00:16:00,466 nó sẽ đi qua tất cả các đơn phần tử của mảng $, mà thường là 330 00:16:00,466 --> 00:16:03,340 sẽ là một mảng kết hợp, nhưng thực sự có thể được bất kỳ loại mảng 331 00:16:03,340 --> 00:16:05,419 mà bạn muốn trong PHP. 332 00:16:05,419 --> 00:16:07,210 Và mỗi lần ở một vòng lặp for có lẽ bạn 333 00:16:07,210 --> 00:16:13,780 đã nói $ array dấu ngoặc vuông $ i, bạn chỉ có thể nói $ key. 334 00:16:13,780 --> 00:16:22,340 Vì vậy, đó $ key trở thành một bí danh cho mỗi chỉ số của mảng PHP kết hợp của bạn, 335 00:16:22,340 --> 00:16:23,710 và do đó bạn có thể sử dụng nó như thế. 336 00:16:23,710 --> 00:16:25,897 >> Vì vậy, ví dụ, chúng tôi đã bây giờ đã nhận mảng pizza của chúng tôi. 337 00:16:25,897 --> 00:16:27,730 Tôi đã loại nhét nó vào góc có 338 00:16:27,730 --> 00:16:31,080 vì vậy chúng tôi có thể sử dụng nó để làm một ví dụ nhanh chóng. 339 00:16:31,080 --> 00:16:36,420 Nếu tôi nói foreach ($ pizza như $ pizza), tốt, những gì đang xảy ra? 340 00:16:36,420 --> 00:16:42,400 Vâng, tôi sẽ lặp qua mỗi yếu tố duy nhất của pizza mảng $, 341 00:16:42,400 --> 00:16:46,670 và khi làm như vậy, tôi sẽ gọi mỗi phần tử, khi tôi là bên trong 342 00:16:46,670 --> 00:16:49,400 của cơ thể đó cho vòng lặp, $ pizza. 343 00:16:49,400 --> 00:16:52,440 >> Vì vậy, đó là sắp xếp của một đứng-in, thu hồi, mà $ bánh pizza 344 00:16:52,440 --> 00:16:59,140 là một stand-in cho nói $ pizza dấu ngoặc vuông $ i 345 00:16:59,140 --> 00:17:03,370 nếu chúng ta đang sử dụng một vòng lặp for, nơi chúng tôi có thể đi từ $ i = 0 đến, trong trường hợp này, 346 00:17:03,370 --> 00:17:06,089 $ i = 3. 347 00:17:06,089 --> 00:17:09,780 Nếu chúng ta không có các cặp giá trị quan trọng ở đây, đây sẽ là phần tử 0, 1, 2, 3, 348 00:17:09,780 --> 00:17:16,390 và chúng tôi sẽ sử dụng một vòng lặp for để đi $ 0 pizza, pizza $ 1, $ 2 pizza, 349 00:17:16,390 --> 00:17:17,750 $ pizza 3. 350 00:17:17,750 --> 00:17:23,130 Vì vậy, bây giờ chỉ cần $ pizza được thay thế cho rằng chính cá nhân. 351 00:17:23,130 --> 00:17:25,630 >> Vì vậy, những gì được này sẽ in ra? 352 00:17:25,630 --> 00:17:29,030 Tôi in ra $ pizza. 353 00:17:29,030 --> 00:17:35,270 Tôi sẽ làm gì để tìm at-- nếu tôi in ra $ pizza, $ i? 354 00:17:35,270 --> 00:17:35,770 Bên phải? 355 00:17:35,770 --> 00:17:38,680 Nếu tôi sẽ in ra yếu tố thứ i của pizza, 356 00:17:38,680 --> 00:17:40,070 những gì tôi sẽ in? 357 00:17:40,070 --> 00:17:42,580 Tôi sẽ in ra giá trị tại vị trí đó, phải không? 358 00:17:42,580 --> 00:17:45,370 Cũng giống như nếu chúng tôi đã làm này trong bối cảnh của C, 359 00:17:45,370 --> 00:17:49,786 chúng ta thường không sử dụng iterator biến, int i = 0, i là ít hơn 3, 360 00:17:49,786 --> 00:17:52,900 i ++, để in ra 0, 1, 2, 3. 361 00:17:52,900 --> 00:17:57,500 Chúng tôi đang in ra mảng 0, mảng 1, 2 mảng, mảng 3. 362 00:17:57,500 --> 00:17:59,580 Và vì vậy những gì này in ra là điều này. 363 00:17:59,580 --> 00:18:01,150 Đây là danh sách các giá. 364 00:18:01,150 --> 00:18:05,750 8.99, 9.99, 10.99, 11.99. 365 00:18:05,750 --> 00:18:06,900 >> Bây giờ một ghi chú nhanh chóng ở đây. 366 00:18:06,900 --> 00:18:10,900 Một vòng lặp foreach không nhất thiết in ra những thứ trong trật tự. 367 00:18:10,900 --> 00:18:12,770 Nó không được bảo đảm. 368 00:18:12,770 --> 00:18:13,550 Nó thường làm. 369 00:18:13,550 --> 00:18:17,667 Nó thường được dựa vào thứ tự trong đó yếu tố được thêm vào mảng, 370 00:18:17,667 --> 00:18:18,750 vì vậy chỉ cần chịu rằng trong tâm trí. 371 00:18:18,750 --> 00:18:20,830 Nó có thể không theo thứ tự. 372 00:18:20,830 --> 00:18:23,930 Nhưng một vòng lặp foreach sẽ lặp qua mọi yếu tố duy nhất 373 00:18:23,930 --> 00:18:25,060 của mảng trong câu hỏi. 374 00:18:25,060 --> 00:18:27,980 Trong trường hợp này, một lần nữa, mảng đó là $ pizza. 375 00:18:27,980 --> 00:18:32,920 >> Tôi có thể thay đổi cú pháp, tuy nhiên, nếu Tôi muốn cả hai chìa khóa và giá trị. 376 00:18:32,920 --> 00:18:37,179 Thay vì nói $ pizza như $ pizza, tôi có thể nói điều này. 377 00:18:37,179 --> 00:18:39,470 Và nếu bạn nhìn vào những gì tôi đã đánh dấu màu xanh ở đây, 378 00:18:39,470 --> 00:18:42,130 nó trông giống như một ánh xạ cặp giá trị quan trọng. 379 00:18:42,130 --> 00:18:45,980 Và vì vậy nếu you-- thậm chí nếu bạn không phải là hoàn toàn chắc chắn những gì nó sẽ làm gì, 380 00:18:45,980 --> 00:18:49,300 bạn có thể đoán rằng $ topping sẽ 381 00:18:49,300 --> 00:18:53,800 là chìa khóa trong trường hợp này và $ giá là có được các giá trị. 382 00:18:53,800 --> 00:18:59,200 Vì vậy, tôi thay thế bây giờ mỗi nguyên tố của $ pizza như một cặp giá trị quan trọng, 383 00:18:59,200 --> 00:19:03,900 và bây giờ tôi có thể tham khảo các khóa và giá trị, mà có thể có ích, 384 00:19:03,900 --> 00:19:05,590 Ví dụ, như sau. 385 00:19:05,590 --> 00:19:10,170 >> "A toàn" - điều này là rất nhiều in ấn đi trên here-- "A toàn" 386 00:19:10,170 --> 00:19:17,300 đứng đầu "pizza giá $" giá, và sau đó Tôi in ra một khoảng thời gian và một dấu gạch chéo ngược n. 387 00:19:17,300 --> 00:19:23,420 Vì vậy, bây giờ, thông báo một lần nữa tôi có quyền truy cập vào một khóa, $ topping, và một giá trị, $ giá. 388 00:19:23,420 --> 00:19:26,647 Vì vậy, bạn có thể đoán những gì này sẽ in ra? 389 00:19:26,647 --> 00:19:29,480 Có rất nhiều các báo cáo in, nhưng chỉ có một dấu gạch chéo ngược n, 390 00:19:29,480 --> 00:19:33,410 do đó, nó sẽ in một cái gì đó trên một entire-- trên một dòng mã. 391 00:19:33,410 --> 00:19:36,965 >> Nếu tôi có thể tham khảo các khóa và các giá trị, sau đó bây giờ, 392 00:19:36,965 --> 00:19:39,090 thay vì chỉ được có thể để in ra các giá, 393 00:19:39,090 --> 00:19:41,330 Tôi có thể in ra một cái gì đó như thế này. 394 00:19:41,330 --> 00:19:43,780 "A toàn pizza pho mát có giá 8,99 $." 395 00:19:43,780 --> 00:19:47,150 Và bây giờ tôi đang sử dụng tất cả các keys-- phô mai, pepperoni, rau, 396 00:19:47,150 --> 00:19:49,640 trâu chicken-- và các giá trị. 397 00:19:49,640 --> 00:19:53,980 8.99, 9.99, 10.99, 11.99 Vì vậy, đó chỉ là một cách khác nhau 398 00:19:53,980 --> 00:19:57,840 để làm một vòng lặp foreach rằng thay vì chỉ đem lại cho bạn truy cập vào các giá trị, 399 00:19:57,840 --> 00:20:02,950 nó chỉ cho you-- nó mang lại cho bạn truy cập vào các phím và các giá trị. 400 00:20:02,950 --> 00:20:04,411 >> Vì vậy, in ra thông tin. 401 00:20:04,411 --> 00:20:07,410 Tôi đã thực hiện nó một vài cách khác nhau, bạn có thể thấy. 402 00:20:07,410 --> 00:20:11,080 Hai chức năng chúng tôi đã chủ yếu nhìn thấy là in ấn và tiếng vang. 403 00:20:11,080 --> 00:20:14,380 Và cho khá nhiều tất cả các tính mục đích, chúng chính xác như nhau. 404 00:20:14,380 --> 00:20:17,130 They're-- có một rất tinh tế Sự khác biệt đó không phải là ngay cả giá trị 405 00:20:17,130 --> 00:20:21,130 nhận được vào, nhưng về cơ bản ở khắp mọi nơi bạn có thể sử dụng in ấn có thể bạn có thể sử dụng 406 00:20:21,130 --> 00:20:22,370 vang vọng là tốt. 407 00:20:22,370 --> 00:20:23,610 >> Và đó không phải là chỉ có hai. 408 00:20:23,610 --> 00:20:26,970 PHP có rất nhiều khác nhau cách để in những điều trên, 409 00:20:26,970 --> 00:20:30,520 và nó cũng có nhiều cách để tích hợp biến vào giữa chuỗi. 410 00:20:30,520 --> 00:20:32,860 Vì vậy, nhớ lại từ C, làm bạn nhớ những gì chức năng 411 00:20:32,860 --> 00:20:37,580 chúng ta có thể sử dụng để thay thế các biến vào những điều chúng ta muốn in ra? 412 00:20:37,580 --> 00:20:40,160 Bạn có thể sử dụng điều này hoạt động khá nhiều. 413 00:20:40,160 --> 00:20:42,290 printf, phải không? 414 00:20:42,290 --> 00:20:45,290 Vì vậy, đây là những gì chúng ta có trước bên trong bối cảnh của vòng lặp foreach của chúng tôi. 415 00:20:45,290 --> 00:20:48,000 Chúng tôi đã có những năm báo cáo in riêng biệt, 416 00:20:48,000 --> 00:20:50,330 bởi vì đó là chỉ cách tôi thực sự biết vào thời điểm đó 417 00:20:50,330 --> 00:20:52,450 làm thế nào để in ra các thông điệp. 418 00:20:52,450 --> 00:20:59,560 Tôi không biết làm thế nào để tích hợp các biến $ đứng vào mã PHP của tôi. 419 00:20:59,560 --> 00:21:03,700 Vâng, nếu tôi chỉ lấy một đoán hoang dã, printf, nó sẽ thực sự đã làm việc. 420 00:21:03,700 --> 00:21:08,980 printf là một chức năng mà tôi có thể sử dụng trong PHP, chỉ thích tôi có thể sử dụng nó trong C. 421 00:21:08,980 --> 00:21:11,880 >> Và như vậy một cái gì đó như thế này, printf, một lần nữa, chúng tôi đã quen với điều đó. 422 00:21:11,880 --> 00:21:16,420 Các% s đầu tiên được thay thế với các giá trị của $ topping. 423 00:21:16,420 --> 00:21:19,700 Các% s thứ hai được thay thế với các giá trị của $ giá. 424 00:21:19,700 --> 00:21:22,630 Và vì vậy tôi interpellating, mà chỉ là một cách ưa thích 425 00:21:22,630 --> 00:21:25,400 nói tôi là gắn bó với biến vào vị trí đó. 426 00:21:25,400 --> 00:21:31,000 Vì vậy, tôi đang cắm trong $ đứng đầu nơi đỏ% s và $ giá mà các blue% s 427 00:21:31,000 --> 00:21:36,060 là, và sau đó tôi sẽ nhận được thông báo, "A toàn pizza pho mát có giá 8,99 $." 428 00:21:36,060 --> 00:21:37,750 >> Không phải là cách duy nhất tôi có thể làm điều đó, mặc dù. 429 00:21:37,750 --> 00:21:39,760 Có lẽ tôi sẽ muốn sử dụng phương pháp này. 430 00:21:39,760 --> 00:21:44,890 Đây thực sự là những gì là phổ biến nhất gọi là chất vấn biến. 431 00:21:44,890 --> 00:21:45,690 Tôi có thể sử dụng một tiếng vang. 432 00:21:45,690 --> 00:21:47,737 Tôi có thể sử dụng một bản in cũng vậy, như chúng ta sẽ thấy. 433 00:21:47,737 --> 00:21:48,820 Nhưng những gì đang xảy ra ở đây? 434 00:21:48,820 --> 00:21:51,520 >> Trước hết, tôi phải thoát khỏi các ký hiệu đô la. 435 00:21:51,520 --> 00:21:55,140 Bởi vì nhớ, khi chúng tôi đã thực sự in ra các giá cả của các loại pizza, 436 00:21:55,140 --> 00:21:59,370 Tôi đã thực sự định dạng chúng như số liệu tiền tệ với một dấu đô la. 437 00:21:59,370 --> 00:22:05,635 Nhưng chúng ta đang sử dụng dấu hiệu đồng đô la cũng để đại diện cho tên biến trong PHP, 438 00:22:05,635 --> 00:22:08,010 và đặc biệt là khi tôi sử dụng phương pháp này của xoăn 439 00:22:08,010 --> 00:22:10,040 biến cú đúp phương pháp chất vấn, tôi cần 440 00:22:10,040 --> 00:22:13,490 để thoát khỏi dấu đô la của tôi vì vậy nó không nghĩ tôi đang nói về một biến. 441 00:22:13,490 --> 00:22:16,920 Nó sẽ thực sự, War in một dấu đô la. 442 00:22:16,920 --> 00:22:19,530 >> Vì vậy, loại analogize nó những gì bạn nhìn thấy ở cuối đó. 443 00:22:19,530 --> 00:22:22,832 Nó không thực sự in dấu gạch chéo ngược n, phải không? 444 00:22:22,832 --> 00:22:24,290 Nó in ra một ký tự dòng mới. 445 00:22:24,290 --> 00:22:26,750 Đây is-- nó không phải đi để in dấu đô la xuyệc ngược, 446 00:22:26,750 --> 00:22:30,130 nó sẽ in ra chỉ một nhân vật dấu đô la. 447 00:22:30,130 --> 00:22:30,640 Cùng ý tưởng. 448 00:22:30,640 --> 00:22:32,760 Trình tự thoát, những gì những điều này được gọi là. 449 00:22:32,760 --> 00:22:37,080 >> Nhưng chú ý rằng tôi không làm bất kỳ loại% s thay thế, 450 00:22:37,080 --> 00:22:40,050 Tôi chỉ theo nghĩa đen cắm trong các biến này. 451 00:22:40,050 --> 00:22:45,110 Và như vậy trong this-- điều gì sẽ xảy ra ở đây là giá trị của $ topping-- một lần nữa, 452 00:22:45,110 --> 00:22:48,390 chỉ phù hợp với những gì chúng ta đã nói về phô mai để far-- sẽ nhận được 453 00:22:48,390 --> 00:22:49,720 cắm vào đó. 454 00:22:49,720 --> 00:22:54,780 Và $ giá sẽ là bất cứ giá trị là tại pizza, dấu ngoặc vuông, pho mát, 455 00:22:54,780 --> 00:22:56,270 đó là 8,99. 456 00:22:56,270 --> 00:23:01,860 Và do đó, điều này cũng sẽ in ra "A toàn pizza pho mát có giá 8,99 $." 457 00:23:01,860 --> 00:23:05,160 Và như tôi đã nói, tôi có thể sử dụng in ở đây thay vì echo, 458 00:23:05,160 --> 00:23:08,040 và các chức năng được khá nhiều giống hệt nhau. 459 00:23:08,040 --> 00:23:09,660 Nó sẽ in ra điều tương tự. 460 00:23:09,660 --> 00:23:12,680 >> Có một cách khác để làm điều đó, và điều này là một lợi thế 461 00:23:12,680 --> 00:23:14,710 của PHP làm việc với chuỗi. 462 00:23:14,710 --> 00:23:17,130 Chúng tôi có thể làm dây nối. 463 00:23:17,130 --> 00:23:19,660 Chúng ta có thể làm điều này trong C, quá, sử dụng một chức năng gọi là strcat, 464 00:23:19,660 --> 00:23:21,180 nhưng một lần nữa, chúng tôi đã phải gọi các chức năng riêng biệt. 465 00:23:21,180 --> 00:23:22,640 Đó là toàn bộ mess này để làm. 466 00:23:22,640 --> 00:23:24,590 Chúng tôi đã phải lb-bao gồm string.h. 467 00:23:24,590 --> 00:23:25,780 Đó là một sản xuất, phải không? 468 00:23:25,780 --> 00:23:30,070 Nhưng bây giờ tôi chỉ có thể sử dụng dấu chấm này để nối dây với nhau. 469 00:23:30,070 --> 00:23:34,910 >> Vì vậy, tôi concatenating "A" toàn bộ và sau đó bất cứ điều gì giá trị của $ topping là, 470 00:23:34,910 --> 00:23:38,860 và sau đó một chuỗi, "chi phí $ bánh pizza" 471 00:23:38,860 --> 00:23:42,340 và sau đó nối các bất cứ điều gì giá trị của $ giá, 472 00:23:42,340 --> 00:23:45,670 và sau đó vào cuối tôi tacking vào kỳ dấu gạch chéo ngược n. 473 00:23:45,670 --> 00:23:47,926 Và vì vậy điều này cũng sẽ in ra "A toàn" - một lần nữa, 474 00:23:47,926 --> 00:23:50,550 nếu chúng ta đang nói về người đầu tiên yếu tố mà pizza array-- 475 00:23:50,550 --> 00:23:54,710 "A toàn pizza pho mát có giá 8,99 $." 476 00:23:54,710 --> 00:24:01,260 Giai đoạn, dấu gạch chéo ngược n, một lần nữa, với các $ topping và $ giá thế chỗ 477 00:24:01,260 --> 00:24:06,580 cho những gì chúng tôi đã quy định trong foreach chúng tôi vòng lặp như các bản đồ cặp giá trị quan trọng. 478 00:24:06,580 --> 00:24:08,050 >> PHP có thể xử lý các chức năng. 479 00:24:08,050 --> 00:24:11,250 Chức năng là loại tách rời với C, như chúng ta đã thấy. 480 00:24:11,250 --> 00:24:14,870 Giống như các biến, chúng ta không cần phải xác định kiểu trả về của hàm, 481 00:24:14,870 --> 00:24:16,350 bởi vì nó không thực sự quan trọng. 482 00:24:16,350 --> 00:24:18,660 Và chúng ta không chỉ định kiểu dữ liệu của tham số nào, 483 00:24:18,660 --> 00:24:21,410 bởi vì họ không thực sự vấn đề, như chúng ta đã thấy trong PHP. 484 00:24:21,410 --> 00:24:24,510 Mỗi chức năng được giới thiệu với từ khóa chức năng. 485 00:24:24,510 --> 00:24:27,920 Đó là cách chúng tôi chỉ ra rằng với PHP những gì chúng ta đang nói về một chức năng là. 486 00:24:27,920 --> 00:24:29,720 >> Và chúng ta không cần phải đối phó với chính ở tất cả, 487 00:24:29,720 --> 00:24:33,690 bởi vì các phiên dịch, PHP thông dịch viên, các công trình từ trên xuống dưới, 488 00:24:33,690 --> 00:24:34,190 bất kể. 489 00:24:34,190 --> 00:24:35,640 Nếu nó thấy bạn có thể làm một cuộc gọi chức năng, nó sẽ thấy 490 00:24:35,640 --> 00:24:37,850 đi tìm cuộc gọi chức năng, thậm chí nếu nó đến sau. 491 00:24:37,850 --> 00:24:40,360 Nhưng nó sẽ đọc từ trên xuống dưới, vì vậy chúng tôi không cần phải xác định, 492 00:24:40,360 --> 00:24:41,500 đây là nơi mà bạn bắt đầu. 493 00:24:41,500 --> 00:24:46,700 Bạn bắt đầu trên dòng 1 của bạn PHP và làm việc xuống từ đó. 494 00:24:46,700 --> 00:24:49,690 >> Vì vậy, ở đây là làm thế nào chúng ta sẽ tạo ra một chức năng gọi là hard_square. 495 00:24:49,690 --> 00:24:54,100 Nó dường như mất một tham số, mà tôi gọi $ x. 496 00:24:54,100 --> 00:24:58,424 Chức năng này rất phức tạp chỉ để minh họa cho những điều khác nhau. 497 00:24:58,424 --> 00:24:59,590 Chúng tôi vẫn còn có giá trị trả lại. 498 00:24:59,590 --> 00:25:00,870 Tôi đang sử dụng một vòng lặp ở đây. 499 00:25:00,870 --> 00:25:04,970 Nhưng về cơ bản nó chỉ là, cái gì đây số tiền chỉ là $ x $ x lần. 500 00:25:04,970 --> 00:25:10,520 Những gì tôi đang thực sự làm là chỉ cần thêm x 0 x lần hoặc $ x để zero $ x lần. 501 00:25:10,520 --> 00:25:15,850 Nhưng nó có hiệu quả chính xác giống như nhân $ x $ x lần. 502 00:25:15,850 --> 00:25:18,700 Tôi vẫn có thể trả về một giá trị, trong trường hợp này $ kết quả, 503 00:25:18,700 --> 00:25:22,060 và tôi đã thực hiện một chức năng trong PHP. 504 00:25:22,060 --> 00:25:24,160 >> Đây là cách bạn có thể sử dụng nó trong ngữ cảnh. 505 00:25:24,160 --> 00:25:26,020 Vì vậy, có lẽ tôi là bên trong của một số tập tin PHP. 506 00:25:26,020 --> 00:25:29,240 Thông báo trong xanh có mà Tôi đã sử dụng các dấu phân cách PHP của tôi, 507 00:25:29,240 --> 00:25:31,010 khung góc dấu hỏi php. 508 00:25:31,010 --> 00:25:35,180 Trong giữa những người đang có tất cả PHP mà tôi muốn viết. 509 00:25:35,180 --> 00:25:37,840 Vì vậy, tôi dường như sẽ get-- Tôi sẽ nhắc nhở người dùng 510 00:25:37,840 --> 00:25:41,550 để cung cấp cho tôi một số, cửa hàng biến, lưu trữ trong đó biến $ x, 511 00:25:41,550 --> 00:25:43,320 bất cứ điều gì họ đã cho tôi. 512 00:25:43,320 --> 00:25:48,590 Sau đó, tôi sẽ để echo hard_square của giá trị đó, 513 00:25:48,590 --> 00:25:50,370 và dường như đi tack trên một dòng mới 514 00:25:50,370 --> 00:25:53,590 là tốt, và sau đó sau này tôi sẽ xác định các chức năng như vậy hard_square 515 00:25:53,590 --> 00:25:55,550 rằng khi tôi làm cho gọi để hard_square, 516 00:25:55,550 --> 00:25:58,160 nó biết những gì tôi đang nói về. 517 00:25:58,160 --> 00:26:00,705 >> Bây giờ, tôi cũng có thể làm một cái gì đó như thế này. 518 00:26:00,705 --> 00:26:02,050 Điều này là hơi khác nhau. 519 00:26:02,050 --> 00:26:04,190 Đó là gần như chính xác giống như những gì chúng ta đã thấy trước đây, 520 00:26:04,190 --> 00:26:08,400 ngoại trừ thay vì nói chỉ $ x có như các tham số để hard_square, 521 00:26:08,400 --> 00:26:11,730 Tôi đang nói $ x = 10. 522 00:26:11,730 --> 00:26:14,330 Vì vậy, đây là một ví dụ về chương trình phòng thủ, 523 00:26:14,330 --> 00:26:17,070 bảo vệ các chương trình của bạn chống lại người sử dụng độc hại. 524 00:26:17,070 --> 00:26:20,020 >> Đây là một cách để làm một số lỗi kiểm tra mà chúng tôi đã không thực sự 525 00:26:20,020 --> 00:26:24,670 có như một tùy chọn trong C. Chúng tôi không bao giờ có thể xác định giá trị mặc định của một cái gì đó. 526 00:26:24,670 --> 00:26:27,010 Chúng tôi luôn luôn phải kiểm tra liệu, ví dụ, 527 00:26:27,010 --> 00:26:30,820 nếu chúng ta thực hiện một cuộc gọi đến GetString, đó là nhất thích hợp nếu ngay lập tức sau khi chúng tôi 528 00:26:30,820 --> 00:26:33,300 kiểm tra rằng, chúng tôi kiểm tra xem chuỗi 529 00:26:33,300 --> 00:26:35,504 mà người sử dụng đã cho chúng tôi không bằng null, 530 00:26:35,504 --> 00:26:37,920 bởi vì chúng tôi không muốn bắt đầu làm việc với một chuỗi null. 531 00:26:37,920 --> 00:26:39,670 >> Ở đây, đây là một cách để bảo vệ chống lại điều đó. 532 00:26:39,670 --> 00:26:43,480 Nếu người sử dụng không cung cấp cho chúng tôi một cái gì đó bằng cách nào đó, những gì chúng ta sẽ làm gì? 533 00:26:43,480 --> 00:26:46,080 Vâng, chúng tôi sẽ chỉ nói bất cứ điều gì họ đã không cung cấp cho chúng tôi, 534 00:26:46,080 --> 00:26:47,705 chúng tôi chỉ cần đi để cắm 10 để thay thế. 535 00:26:47,705 --> 00:26:52,030 Vì vậy, nếu họ không cho chúng tôi một giá trị, chỉ cần sử dụng 10 theo mặc định. Và như vậy ở đây, 536 00:26:52,030 --> 00:26:53,940 nhận thấy rằng tôi đang làm một cuộc gọi để hard_square, 537 00:26:53,940 --> 00:26:55,980 nhưng không có dấu nhắc cho người sử dụng, phải không? 538 00:26:55,980 --> 00:26:57,540 Tôi chỉ làm một cuộc gọi rỗng. 539 00:26:57,540 --> 00:27:00,860 >> Nhưng chức năng của tôi hard_square đang mong đợi một tham số. 540 00:27:00,860 --> 00:27:02,222 Những gì được này sẽ in ra? 541 00:27:02,222 --> 00:27:03,680 Nó sẽ in ra 100, phải không? 542 00:27:03,680 --> 00:27:05,720 Bởi vì người dùng không cho tôi bất cứ điều gì. 543 00:27:05,720 --> 00:27:08,970 Và vì vậy tôi chỉ cần đi để giả rằng 10-- 10 là giá trị mặc định. 544 00:27:08,970 --> 00:27:13,760 Và vì vậy đây sẽ in ra 100 trên một dòng riêng. 545 00:27:13,760 --> 00:27:16,390 >> File PHP không phải chỉ là một tập tin duy nhất. 546 00:27:16,390 --> 00:27:19,480 Bạn có thể kết hợp nhiều file với nhau, giống như bạn có thể trong C. Cách 547 00:27:19,480 --> 00:27:24,330 chúng tôi đã làm điều đó trong C là thường để làm một #include để có được các tập tin tiêu đề kéo theo. 548 00:27:24,330 --> 00:27:26,180 Chúng tôi không làm điều đó trong PHP. 549 00:27:26,180 --> 00:27:29,110 Chúng tôi làm một cái gì đó gọi là require_once. 550 00:27:29,110 --> 00:27:33,360 Và sau đó là toàn bộ này điều, __dir__ này là những gì? 551 00:27:33,360 --> 00:27:36,510 Đó chỉ là một đặc biệt biến hoặc hằng số đặc biệt, 552 00:27:36,510 --> 00:27:39,030 thực sự, mà chỉ rõ những gì thư mục hiện tại của bạn là. 553 00:27:39,030 --> 00:27:41,320 Và do đó, nó sẽ trông trong thư mục hiện tại của bạn 554 00:27:41,320 --> 00:27:44,900 cho một tập tin gọi là cs50.php trong ví dụ này ở đây, 555 00:27:44,900 --> 00:27:50,490 và nó sẽ dính vào tập tin đó ở đầu chương trình PHP của bạn, 556 00:27:50,490 --> 00:27:56,980 giả sử rằng bạn đặt các đòi hỏi một khi dòng ở trên cùng của tập tin PHP của bạn. 557 00:27:56,980 --> 00:28:01,474 >> Vì vậy, PHP được sử dụng chủ yếu, nhưng không độc quyền sử dụng, 558 00:28:01,474 --> 00:28:03,140 như là một ngôn ngữ lập trình dựa trên web. 559 00:28:03,140 --> 00:28:05,270 Đó là thực sự nó như thế nào đến được. 560 00:28:05,270 --> 00:28:06,980 Nhưng nó là một đầy đủ ngôn ngữ, như chúng ta đã nhìn thấy. 561 00:28:06,980 --> 00:28:10,105 Chúng tôi đã nhìn thấy khá nhiều tất cả mọi thứ mà nó có thể làm tương tự như C, 562 00:28:10,105 --> 00:28:13,290 và nó có thể làm một heck của nhiều hơn thế. 563 00:28:13,290 --> 00:28:16,950 >> Nhưng vì nó là một ngôn ngữ đầy đủ và chúng tôi có thể làm lập trình dòng lệnh trong đó. 564 00:28:16,950 --> 00:28:18,630 Chúng tôi có thể chạy các chương trình dòng lệnh. 565 00:28:18,630 --> 00:28:22,580 Tất cả những gì cần thiết để chạy một lệnh chương trình dòng mà được viết bằng PHP 566 00:28:22,580 --> 00:28:24,260 là bạn có một thông dịch viên PHP. 567 00:28:24,260 --> 00:28:27,460 Vì vậy, nó là loại tương tự có một trình biên dịch trên hệ thống của bạn 568 00:28:27,460 --> 00:28:31,100 nếu bạn muốn biên dịch mã C của bạn để biến nó thành file thực thi. 569 00:28:31,100 --> 00:28:33,810 Bạn cần có một thông dịch viên PHP mà tồn tại trên hệ thống của bạn 570 00:28:33,810 --> 00:28:37,330 để bạn có thể giải thích các file PHP. 571 00:28:37,330 --> 00:28:40,370 >> Giả sử bạn, và thường Phiên dịch này được gọi là PHP, 572 00:28:40,370 --> 00:28:44,300 và nó thường đi kèm với hầu hết tải hoặc cài đặt của PHP 573 00:28:44,300 --> 00:28:47,430 mà bạn có thể nhận được trực tuyến, và chắc chắn tên của thông dịch viên PHP 574 00:28:47,430 --> 00:28:49,550 chúng tôi có trong CS50, IDE. 575 00:28:49,550 --> 00:28:51,819 Tất cả bạn cần làm là loại tập tin php. 576 00:28:51,819 --> 00:28:53,610 Và những gì chương trình của bạn đi làm là nó 577 00:28:53,610 --> 00:28:55,360 sẽ chạy qua phiên dịch, đó là 578 00:28:55,360 --> 00:28:58,040 sẽ bỏ qua tất cả mọi thứ đó là không ở giữa câu hỏi mark-- 579 00:28:58,040 --> 00:29:03,160 hay, góc khung dấu hỏi php, các dấu PHP, và in nó ra, 580 00:29:03,160 --> 00:29:07,660 và nó sẽ hiểu và thực hiện các mã bên trong của các dấu phân cách PHP của bạn. 581 00:29:07,660 --> 00:29:12,850 >> Vì vậy, hãy bật hơn để CS50 IDE và có một cái nhìn tại một vài tập tin PHP, 582 00:29:12,850 --> 00:29:19,850 chạy một vài tập tin PHP, trong giao diện dòng lệnh của CS50 IDE. 583 00:29:19,850 --> 00:29:22,100 Vì vậy, ở đây chúng tôi đang trong CS50 IDE, và tôi đã tự 584 00:29:22,100 --> 00:29:25,800 mở một tập tin gọi là hello1.php. 585 00:29:25,800 --> 00:29:29,920 Và rõ ràng, nội dung này tập tin chỉ là các dấu PHP có, 586 00:29:29,920 --> 00:29:32,220 và ở giữa, echo ("hello, world"). 587 00:29:32,220 --> 00:29:34,710 Đây là một chương trình PHP khá đơn giản. 588 00:29:34,710 --> 00:29:37,670 Tôi chỉ cần đi để di chuyển xuống để cửa sổ terminal của tôi ở đây, 589 00:29:37,670 --> 00:29:44,320 và tôi sẽ gõ php hello1.php, nhấn Enter. 590 00:29:44,320 --> 00:29:44,950 Chào thế giới. 591 00:29:44,950 --> 00:29:48,110 Đó có thể là những gì chúng tôi đã mong nó để làm gì rồi chứ? 592 00:29:48,110 --> 00:29:51,140 >> Chúng ta hãy đi lên và đi khác nhìn vào một chương trình. 593 00:29:51,140 --> 00:29:52,924 hello2.php. 594 00:29:52,924 --> 00:29:55,090 Khá nhiều điều tương tự, không nhiều đang xảy ra ở đây. 595 00:29:55,090 --> 00:29:57,190 Thời gian này, mặc dù, tôi sẽ nhắc nhở người sử dụng để cho tôi tên của họ. 596 00:29:57,190 --> 00:29:59,290 Tôi đang sử dụng mà chức năng readline một lần nữa. 597 00:29:59,290 --> 00:30:01,340 $ name = readline. 598 00:30:01,340 --> 00:30:03,070 Đó là nhanh chóng, "Tên của bạn là gì?" 599 00:30:03,070 --> 00:30:04,880 >> Rõ ràng tôi in nó trên một dòng riêng. 600 00:30:04,880 --> 00:30:07,220 Và sau đó, do đó, dòng dưới đây đó sẽ là dấu nhắc 601 00:30:07,220 --> 00:30:08,750 nơi người dùng có thể nhập tên của họ. 602 00:30:08,750 --> 00:30:12,030 Và sau đó tôi đang sử dụng một chút đồng nhân biến ở đây trên dòng 3 603 00:30:12,030 --> 00:30:14,780 để in ra "Hello" và bất cứ điều gì mà người dùng. 604 00:30:14,780 --> 00:30:22,040 Vì vậy, đây là tương tự để nói, Xin chào, dấu phẩy,% s, nếu chúng ta đã sử dụng printf trong C. 605 00:30:22,040 --> 00:30:24,910 >> Vì vậy, chúng ta hãy đi và giải thích chương trình này. 606 00:30:24,910 --> 00:30:27,400 Vì vậy, một lần nữa, tôi sẽ di chuyển xuống đến cửa sổ thiết bị đầu cuối của tôi. 607 00:30:27,400 --> 00:30:29,070 php hello2.php. 608 00:30:29,070 --> 00:30:31,920 609 00:30:31,920 --> 00:30:33,820 Bạn tên là gì? 610 00:30:33,820 --> 00:30:35,490 Doug. 611 00:30:35,490 --> 00:30:36,526 Xin chào, Doug. 612 00:30:36,526 --> 00:30:39,440 Tôi cũng có một tập tin gọi là hello3.php. 613 00:30:39,440 --> 00:30:42,850 Tôi sẽ xóa của tôi màn hình với điều khiển L, 614 00:30:42,850 --> 00:30:46,210 và tôi sẽ thực hiện điều đó. 615 00:30:46,210 --> 00:30:47,640 Bạn tên là gì? 616 00:30:47,640 --> 00:30:49,020 Doug. 617 00:30:49,020 --> 00:30:49,780 Xin chào, Doug. 618 00:30:49,780 --> 00:30:56,540 Vì vậy, hành vi này là giống hệt nhau để hello2.php, nhưng tại sao nó hello3.php? 619 00:30:56,540 --> 00:30:58,040 >> Vâng, đây là sự khác biệt. 620 00:30:58,040 --> 00:31:00,620 Trong trường hợp này, thông báo mà trên dòng 1 ở đây, 621 00:31:00,620 --> 00:31:04,270 Tôi có một cái gì đó không phải ở giữa các ký tự phân cách PHP. 622 00:31:04,270 --> 00:31:07,760 Tôi chỉ cần in out-- hoặc tôi chỉ cần gõ chữ "Tên của bạn là gì?" 623 00:31:07,760 --> 00:31:12,060 Khi các thông dịch viên PHP thấy này, nó đã không có ý tưởng làm thế nào để giải thích nó như PHP, 624 00:31:12,060 --> 00:31:15,060 và vì vậy thay vì thất bại, nó chỉ cần đi để nhổ nó ra. 625 00:31:15,060 --> 00:31:19,010 >> Vì vậy, thông báo trên dòng 3 bây giờ, cuộc gọi của tôi để readline, không có dấu nhắc nữa. 626 00:31:19,010 --> 00:31:21,750 Tôi chỉ thực sự đi đối với: khi các thông dịch viên PHP thấy này, 627 00:31:21,750 --> 00:31:23,400 nó sẽ in ra "Bạn tên là gì?" 628 00:31:23,400 --> 00:31:25,941 Sau đó nó thấy, oh, OK, here's-- mọi thứ khác là có được 629 00:31:25,941 --> 00:31:29,970 giải thích như PHP, vì vậy đó là lý do tại sao các công trình này. 630 00:31:29,970 --> 00:31:34,990 Tôi không phải nhất thiết phải nhắc sự đối với: người sử dụng bên trong của readline, 631 00:31:34,990 --> 00:31:37,490 Tôi chỉ có thể có nó bên ngoài của các ký tự phân cách PHP 632 00:31:37,490 --> 00:31:41,490 và cho phép các thông dịch viên chỉ in nó ra cho tôi. 633 00:31:41,490 --> 00:31:45,364 >> Vì vậy, bạn không thực sự chỉ có để có một tập hợp các ký tự phân cách PHP 634 00:31:45,364 --> 00:31:46,030 trong chương trình của bạn. 635 00:31:46,030 --> 00:31:49,887 Bạn thực sự có thể có một vài trong số họ, mở và đóng chúng khi cần thiết. 636 00:31:49,887 --> 00:31:51,720 Vì vậy, chúng ta hãy có một cái nhìn ở một vài chương trình 637 00:31:51,720 --> 00:31:55,070 trong CS50 IDE nơi chúng tôi minh họa cho ý tưởng này có 638 00:31:55,070 --> 00:31:58,376 nhiều bộ phân PHP. 639 00:31:58,376 --> 00:32:02,010 >> OK, vì vậy tôi đã mở một tập tin đây gọi là add1.php. 640 00:32:02,010 --> 00:32:03,390 Và thông báo những gì đang xảy ra ở đây. 641 00:32:03,390 --> 00:32:08,077 Cũng như trước đây, tôi có một đơn đặt PHP của dấu phân cách. 642 00:32:08,077 --> 00:32:10,660 Tôi sẽ in ra tin nhắn, "Xin cho tôi một số." 643 00:32:10,660 --> 00:32:13,394 Sau đó, tôi sẽ đọc một dòng và lưu trữ nó trong $ num1 biến. 644 00:32:13,394 --> 00:32:14,810 Sau đó, tôi sẽ in ra một lần nữa. 645 00:32:14,810 --> 00:32:16,310 Hãy cho tôi một số thứ hai. 646 00:32:16,310 --> 00:32:20,450 Đọc một dòng từ người sử dụng, lưu trữ bất cứ điều gì họ gõ vào trong $ num2. 647 00:32:20,450 --> 00:32:23,980 Thêm chúng với nhau và lưu trữ mà dẫn đến một biến gọi là $ sum, 648 00:32:23,980 --> 00:32:26,180 và sau đó in ra, "The tổng của hai số 649 00:32:26,180 --> 00:32:29,254 là, "và sau đó chất vấn có các $ sum biến. 650 00:32:29,254 --> 00:32:31,170 Vì vậy, chúng ta hãy chỉ chạy này thông qua người phiên dịch 651 00:32:31,170 --> 00:32:33,720 để xác nhận rằng đây là những gì chúng tôi mong đợi. 652 00:32:33,720 --> 00:32:37,540 php add1.php. 653 00:32:37,540 --> 00:32:38,665 Xin vui lòng cho tôi một số, 3. 654 00:32:38,665 --> 00:32:40,410 Xin cho tôi một số thứ hai, 4. 655 00:32:40,410 --> 00:32:43,370 Tổng của hai số là 7. 656 00:32:43,370 --> 00:32:45,030 Đó là 3 cộng với 4. 657 00:32:45,030 --> 00:32:45,530 ĐƯỢC? 658 00:32:45,530 --> 00:32:47,770 Vì vậy, không có gì ghê gớm ưa thích ở đó. 659 00:32:47,770 --> 00:32:51,080 >> Và bây giờ hãy mở add2.php. 660 00:32:51,080 --> 00:32:54,460 Ở đây, tôi đã có một vài PHP phân bộ ở đó, phải không? 661 00:32:54,460 --> 00:32:59,107 Dòng 1, dòng 1 và 3-- 3 không có dấu phân cách PHP. 662 00:32:59,107 --> 00:33:00,940 Vì vậy, khi các thông dịch viên nhìn thấy họ, nó chỉ 663 00:33:00,940 --> 00:33:03,220 sẽ nhổ ra chính xác những gì tôi đã gõ có. 664 00:33:03,220 --> 00:33:05,011 Vì vậy, đó là nơi tôi làm tất cả khiến tôi. 665 00:33:05,011 --> 00:33:11,220 Trên dòng 2 và 4, chúng ta thấy rất quen thuộc $? php loại ký tự phân cách, 666 00:33:11,220 --> 00:33:15,210 vì vậy hai dòng là sẽ thực hiện như PHP. 667 00:33:15,210 --> 00:33:18,270 Và sau đó trên đường 5, tôi có điều này Điều kỳ lạ ở đây, phải không? 668 00:33:18,270 --> 00:33:20,480 Khung góc này dấu hỏi dấu bằng. 669 00:33:20,480 --> 00:33:22,660 Tôi thậm chí sẽ phóng to một chút nữa. 670 00:33:22,660 --> 00:33:29,270 Bạn có thể thấy điều này là những gì tôi nói về ngay đó, $ này? =. 671 00:33:29,270 --> 00:33:33,420 >> Nó chỉ ra rằng nó rất phổ biến mà lý do mà chúng ta mở ra một bộ PHP 672 00:33:33,420 --> 00:33:36,055 các dấu phân cách là in ra một giá trị. 673 00:33:36,055 --> 00:33:37,430 Và đó là tất cả chúng ta sẽ phải làm gì. 674 00:33:37,430 --> 00:33:39,220 Nhưng thậm chí còn có cách viết tắt cho điều đó. 675 00:33:39,220 --> 00:33:46,490 $ = PHP là viết tắt cho nói một cái gì đó giống như $? php echo tổng 676 00:33:46,490 --> 00:33:48,350 của num1 và num2. 677 00:33:48,350 --> 00:33:51,900 Vì vậy, đây chỉ là một viết tắt cho điều đó. 678 00:33:51,900 --> 00:33:55,550 >> Vì vậy, nếu tôi chạy chương trình này, php add2.php. 679 00:33:55,550 --> 00:33:57,530 Tôi sẽ thu nhỏ xuống một chút. 680 00:33:57,530 --> 00:33:59,000 Xin vui lòng cho tôi một số, 4. 681 00:33:59,000 --> 00:34:00,350 Xin cho tôi một số thứ hai. 682 00:34:00,350 --> 00:34:04,650 Và vì tôi không thực sự quan tâm kiểu dữ liệu trong PHP, tôi có thể nói 4.8. 683 00:34:04,650 --> 00:34:07,160 Tổng của hai số là 8,8. 684 00:34:07,160 --> 00:34:10,179 Chức năng mà ứng xử khá nhiều chính xác giống như chúng ta mong đợi, 685 00:34:10,179 --> 00:34:10,989 cũng. 686 00:34:10,989 --> 00:34:13,114 Và tôi có thêm một mở lên đây gọi là dice.php. 687 00:34:13,114 --> 00:34:25,625 688 00:34:25,625 --> 00:34:26,250 Hãy thử điều này một lần nữa. 689 00:34:26,250 --> 00:34:29,429 690 00:34:29,429 --> 00:34:33,280 Tôi có thêm một ở đây gọi là dice1.php, mà cũng có, thấy, 691 00:34:33,280 --> 00:34:37,440 có câu hỏi khung góc đánh dấu ký hiệu dấu bằng trong đó, 692 00:34:37,440 --> 00:34:40,659 nhưng thông báo rằng trong trường hợp này tôi gọi rand chức năng, mà như bạn 693 00:34:40,659 --> 00:34:42,790 có thể mong đợi tạo ra một số ngẫu nhiên. 694 00:34:42,790 --> 00:34:46,889 "Bạn lăn một", và nó sẽ tính toán một số số ngẫu nhiên, mod 6 + 695 00:34:46,889 --> 00:34:47,389 1. 696 00:34:47,389 --> 00:34:49,989 Vì vậy, mà sẽ cung cấp cho tôi số trong khoảng 1-6. 697 00:34:49,989 --> 00:34:53,040 >> Hãy nhớ rằng mod 6 sẽ cho tôi một số trong khoảng từ 0 đến 5, 698 00:34:53,040 --> 00:34:56,630 nhưng nếu tôi là mô phỏng cuộn dice, đó là những gì tôi đang làm ở đây, 699 00:34:56,630 --> 00:35:00,040 Tôi không muốn những con xúc xắc để đi từ 0 5, tôi muốn con xúc xắc mà đi 1-6. 700 00:35:00,040 --> 00:35:02,800 Và vì vậy đây là một cách để có được tôi trong khoảng 1-6. 701 00:35:02,800 --> 00:35:04,720 Tôi đang làm điều này hai lần. 702 00:35:04,720 --> 00:35:08,630 Vì vậy, dường như tôi đang lăn hai con xúc xắc trong chương trình này. 703 00:35:08,630 --> 00:35:15,210 >> Vì vậy, tôi sẽ rõ ràng màn hình của tôi, và tôi sẽ làm php dice1.php. 704 00:35:15,210 --> 00:35:16,640 Bạn lăn một 4 và một 2. 705 00:35:16,640 --> 00:35:19,156 Và nếu tôi chạy chương trình một lần nữa, bạn lăn một 5 và 5. 706 00:35:19,156 --> 00:35:21,780 Vì vậy, mỗi khi tôi chạy chương trình, Tôi nhận được con số khác nhau, 707 00:35:21,780 --> 00:35:24,280 vì mỗi khi tôi làm vì vậy, nó bắt đầu lại. 708 00:35:24,280 --> 00:35:27,250 Nó sẽ tạo ra một mới thiết lập các số ngẫu nhiên đối với tôi. 709 00:35:27,250 --> 00:35:29,790 >> Vì vậy, nếu chúng ta đang sử dụng để chạy chương trình từ C, 710 00:35:29,790 --> 00:35:32,520 chúng tôi đang sử dụng để gõ các ./ tên của một chương trình, phải không? 711 00:35:32,520 --> 00:35:35,090 Đó là cách chúng tôi đã làm tất cả các chương trình của chúng tôi trong C cho đến nay. 712 00:35:35,090 --> 00:35:37,555 Chúng tôi có thể làm điều này trong PHP cũng bằng cách thêm vào một cái gì đó gọi là 713 00:35:37,555 --> 00:35:40,026 một công việc để đầu tập tin PHP của chúng tôi. 714 00:35:40,026 --> 00:35:41,400 Tôi biết đó là một từ rất ngớ ngẩn. 715 00:35:41,400 --> 00:35:44,540 Nó ngắn cho hash bang. 716 00:35:44,540 --> 00:35:46,300 Đó là hai nhân vật đầu tiên ở đó. 717 00:35:46,300 --> 00:35:50,030 Nhớ là chúng tôi gọi là điểm chấm than thường xuyên một tiếng nổ trong khoa học máy tính. 718 00:35:50,030 --> 00:35:51,690 Nó cũng có thể là cho nổ mạnh. 719 00:35:51,690 --> 00:35:53,273 Có một vài cách để giải thích nó. 720 00:35:53,273 --> 00:35:57,320 Nhưng về cơ bản nó là một loại đặc biệt các lệnh mà các thông dịch viên PHP 721 00:35:57,320 --> 00:36:00,160 hiểu như, oh, tôi muốn bạn thực hiện chương trình này, 722 00:36:00,160 --> 00:36:05,250 mà rõ ràng là / user / bin / php, mà thực sự là nơi mà các thông dịch viên PHP 723 00:36:05,250 --> 00:36:08,590 Cụ thể sống trên hệ thống của chúng tôi. 724 00:36:08,590 --> 00:36:12,530 Vì vậy, những gì xảy ra ở đây it's-- là các thông dịch viên hiểu, oh, 725 00:36:12,530 --> 00:36:17,270 Tôi dường như là nghĩa vụ phải sử dụng trong chương trình này để chạy tập tin này. 726 00:36:17,270 --> 00:36:20,010 Và do đó, nó cho phép bạn bỏ qua các bước 727 00:36:20,010 --> 00:36:22,979 vì phải nói php something.php. 728 00:36:22,979 --> 00:36:25,020 Có một catch khác ở đây, đó là nếu chúng tôi 729 00:36:25,020 --> 00:36:27,320 muốn chương trình của chúng tôi để làm việc như mong đợi, chúng tôi 730 00:36:27,320 --> 00:36:30,220 cần phải làm một cái gì đó gọi là một sự thay đổi cho phép tập tin. 731 00:36:30,220 --> 00:36:33,380 Và chúng tôi sẽ go-- và chúng tôi nói chuyện một chút bit thêm về tập tin cho phép thay đổi 732 00:36:33,380 --> 00:36:37,550 trong video của chúng tôi trên MVC, nhưng nó đủ để nói rằng đây là những gì bạn cần làm 733 00:36:37,550 --> 00:36:42,760 để làm cho bạn .php file thực thi. 734 00:36:42,760 --> 00:36:49,330 Vì vậy, chúng ta hãy nhìn vào điều này như ví dụ cuối cùng của chúng tôi hơn trong CS50 IDE. 735 00:36:49,330 --> 00:36:53,910 >> Vì vậy, ở đây trong IDE Tôi có hai tập tin trong này Thư mục PHP mà không xuất hiện được 736 00:36:53,910 --> 00:36:55,310 gọi là .php. 737 00:36:55,310 --> 00:36:58,170 Tôi có một chức năng gọi là add-- Tôi có một tập tin gọi là add3 738 00:36:58,170 --> 00:37:00,650 và một tập tin gọi là dice2. 739 00:37:00,650 --> 00:37:03,680 Vì vậy, chúng ta hãy nhanh chóng tìm và mở ra add3. 740 00:37:03,680 --> 00:37:08,300 Và như bạn có thể thấy, ngay từ đầu các tập tin của tôi, tôi có công việc này, phải không? 741 00:37:08,300 --> 00:37:11,420 Điểm này băm dấu chấm than. 742 00:37:11,420 --> 00:37:15,115 Bây giờ, bạn cũng sẽ thấy có lẽ nhận thấy rằng đối với một số lý do, 743 00:37:15,115 --> 00:37:16,990 Tôi không có bất kỳ cú pháp làm nổi bật nữa, 744 00:37:16,990 --> 00:37:20,198 và đây là những gì tôi đã đề cập đến trước đó, đó là nếu tôi không đặt tên cho tập tin của tôi 745 00:37:20,198 --> 00:37:23,040 .php, tôi không có lợi ích cú pháp nổi bật nữa. 746 00:37:23,040 --> 00:37:26,220 Tập tin này được chỉ cần gọi là add3. 747 00:37:26,220 --> 00:37:30,960 Vì vậy, tôi có thể chạy nó sau này với ./ add3 và không ./ add3.php. 748 00:37:30,960 --> 00:37:33,680 >> Vì vậy, các reason-- nó vẫn còn tốt, nó vẫn còn hợp lệ PHP, 749 00:37:33,680 --> 00:37:37,000 nhưng nó không nổi bật cú pháp, bởi vì tập tin này không được gọi là something.php. 750 00:37:37,000 --> 00:37:41,580 Đó là sự khác biệt duy nhất ở đây, cộng với công việc. 751 00:37:41,580 --> 00:37:45,170 Vì vậy, chúng ta hãy xem những gì sẽ xảy ra khi Tôi cố gắng và chạy chương trình này. 752 00:37:45,170 --> 00:37:50,780 ./ Add3, giống như tôi làm với C. Bash. 753 00:37:50,780 --> 00:37:53,190 ./ Phép add3 từ chối. 754 00:37:53,190 --> 00:37:55,390 Đây là những gì bạn đang đi để xem nếu bạn quên 755 00:37:55,390 --> 00:37:59,280 sử dụng lệnh chmod để thay đổi quyền của các tập tin. 756 00:37:59,280 --> 00:38:03,845 >> Khi nó quay ra, thường xuyên PHP các tập tin có thể không chỉ được thực thi. 757 00:38:03,845 --> 00:38:06,970 Họ có thể được giải thích, nhưng chúng tôi làm một chút gì đó khác nhau ở đây. 758 00:38:06,970 --> 00:38:07,761 Chúng tôi đang thực hiện nó. 759 00:38:07,761 --> 00:38:12,970 Và vì vậy tôi cần phải thêm các phép thực hiện, chmod a + x để add3. 760 00:38:12,970 --> 00:38:15,680 Sau đó, tôi có thể nói ./ add3. 761 00:38:15,680 --> 00:38:16,860 Xin vui lòng cho tôi một số. 762 00:38:16,860 --> 00:38:18,060 5, 6. 763 00:38:18,060 --> 00:38:20,490 Tổng của hai số là 11. 764 00:38:20,490 --> 00:38:26,530 >> Tương tự như vậy, tôi đã chmoded dice2, vì vậy tôi chỉ có thể gõ ./ dice2, 765 00:38:26,530 --> 00:38:31,260 bạn lăn một 1 và 1, bạn lăn một 5 và 4, và như vậy. 766 00:38:31,260 --> 00:38:33,680 >> Vì vậy, đó là khá nhiều Ý tưởng về một cú pháp PHP, phải không? 767 00:38:33,680 --> 00:38:35,221 Có rất nhiều để có được thông qua, tôi biết. 768 00:38:35,221 --> 00:38:39,160 Nhưng hy vọng bạn đã nhìn thấy hiện nay PHP là không thực sự là khác nhau từ C 769 00:38:39,160 --> 00:38:43,670 và thực sự mang lại cho chúng ta khả năng để có những điều lên một hoặc hai bậc. 770 00:38:43,670 --> 00:38:48,230 Chúng tôi không thực sự phải lo lắng quá nhiều about-- chúng ta không thực sự 771 00:38:48,230 --> 00:38:51,605 phải lo lắng quá nhiều về các chi tiết ở cấp thấp, chúng tôi 772 00:38:51,605 --> 00:38:52,980 đã phải lo lắng về với C, phải không? 773 00:38:52,980 --> 00:38:56,170 Chúng tôi có thể tập trung vào các cao mức thứ mà PHP 774 00:38:56,170 --> 00:39:01,090 cho phép chúng ta làm và đưa cho các cấp rằng nó sẽ làm việc cho chúng tôi. 775 00:39:01,090 --> 00:39:04,350 Vì vậy, nó mang lại cho chúng ta khả năng bây giờ, chuyển từ C đến PHP, 776 00:39:04,350 --> 00:39:08,280 để làm cho chương trình có rất nhiều chi tiết phức tạp và có lẽ rất nhiều mạnh mẽ hơn. 777 00:39:08,280 --> 00:39:13,070 >> Vì vậy, tôi hy vọng bạn có làm việc vui vẻ với PHP, và tôi là Doug Lloyd. 778 00:39:13,070 --> 00:39:15,050 Đây là CS50. 779 00:39:15,050 --> 00:39:17,637