DOUG LLOYD: Vì vậy, chúng tôi đã thực hiện rất nhiều công việc trong C, và C là một thực sự mát mẻ ngôn ngữ vì nó mang lại cho bạn khả năng lặn thực sự mức thấp vào các chương trình của bạn. Chúng tôi nhận được để làm những điều như thực sự là phút thao tác byte riêng lẻ của bộ nhớ. Nhớ lại rằng con trỏ thực sự cho phép chúng tôi linh hoạt đó. 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 trong các chương trình của chúng tôi? Có lẽ là không, phải không? Và nếu chúng ta sẽ có một thương mại-off giữa việc có thể làm thực sự, thực sự điều phút và thực sự, thực sự 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 những ý tưởng thực sự lớn, nếu họ đã xây dựng cho chúng ta, nói chung để xây dựng lớn các chương trình, dự án lớn, 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 cho chúng ta, thay vì có những thứ ở mức độ thấp. Và đó là nơi PHP thực sự đến. Bây giờ, một trong những lý do rằng chúng ta dạy PHP ở CS50 được mà nó lấy cảm hứng từ C. Và trên thực tế, theo ý kiến ​​của tôi, có thực sự hai ngôn ngữ mà tổ tiên rất phổ biến hiện nay. C và LISP. Và họ là ngôn ngữ nguyên bản bởi vì mỗi lập trình hiện đại khác ngôn ngữ đã phát triển kể từ đó là cảm hứng bởi một hoặc các cú pháp khác. PHP là rất tương tự như cú pháp C, trong khi các ngôn ngữ như Đề án, ví dụ, bạn có thể đã nghe nói, đượ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. Vì vậy, lý do chúng tôi dạy PHP trong CS50 là, bằng cách biết C như cơ bản như bạn làm vào thời điểm này, chọn lên PHP, mang đến cho bạn khả năng làm những cấp độ cao hơn nhiều 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, bởi vì bạn đã có Ý tưởng cơ bản của cú pháp. C là được khoảng gần 45 năm vào thời điểm này. PHP là được khoảng 20 năm. Và trong 25 năm ở giữa, các lập trình viên xác định rằng họ sẽ nhiều chứ không có khả năng cấp cao hơn, và những sai lầm và những cuộc đấu tranh trong 20 năm ở giữa dẫn đến PHP và các ngôn ngữ hiện đại khác. PHP của một lựa chọn tuyệt vời của ngôn ngữ cho phần mềm rằng allow-- cho phần mềm that-- nơi bạn cần phải làm những việc mà trong C là thực sự phức tạp. Vì vậy, ví dụ, làm việc với chuỗi trong C là rất phức tạp, bởi vì như chúng ta biết, chuỗi trong C thực sự chỉ là mảng các ký tự. Nó không phải là một kiểu dữ liệu được xây dựng trong. 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, nếu những gì bạn cần làm một số mạng máy tính? Được rồi? 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. Nó sẽ không được tốt đẹp nếu ngôn ngữ có một built-in, cách dễ dàng để thực hiện kết nối mạng? 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. 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ự. Và do đó, nó hy vọng sẽ làm cho các quá trình chuyển đổi từ một đến khác 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. Để 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. Về mặt kỹ thuật này không phải là thực sự cần thiết, 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 đó 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ữ được nhấn mạnh trong một màu sắc cụ thể, bạn thường 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ể. 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, 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 phân cách chúng ta nhìn thấy đây trên màn hình. Khung góc php? Để bắt đầu. 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. Và sau đó ? khung góc đóng. Nếu chúng ta không làm được điều này, sau đó điều gì sẽ xảy ra? Nó sẽ không sụp đổ. 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. Nhưng nó sẽ không có các hiệu ứng mà chúng ta muốn. 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, 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. Nó không phải đi làm thực thi mã, nó sẽ chỉ in ra đúng nguyên văn. Bây giờ tại sao lại là trường hợp? Vì vậy, C là những gì được biết như là một ngôn ngữ biên dịch. Bạn có thể quen với các bước làm cho chương trình của bạn, chuyển các file .c và tập tin h vào một thực thi với make, đặc biệt sử dụng Clang như trình biên dịch của chúng tôi. PHP, mặc dù, không có tương đương này. PHP là những gì được gọi là một ngôn ngữ giải thích. Và điều đó có nghĩa là gì? 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 trước. Thay vào đó, có một chương trình, mà cũng được gọi là PHP, mà hiểu PHP và loại có thể làm cho nó trên bay. Đó 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 về những gì đang xảy ra. Nó giải thích những zero và những người trên bay. Và vì vậy nếu nó không biết làm thế nào để xử lý một cái gì đó, nếu nó không biết làm thế nào để Quá trình PHP, bạn có thể muốn đưa văn bản mà trong đó, phải không? Có thể bạn muốn đặt mã trong ở đó, ngay cả khi nó không phải giữa PHP-- các dấu PHP. But-- vì vậy nó không đi để xóa nó cho bạn, nó chỉ cần đi để về cơ bản loại bỏ nó. Vì vậy, nó sẽ in nó ra màn hình. Điều này có vẻ như đó là một xấu điều, nhưng thực sự nó là sẽ là một thực sự điều tốt, như chúng ta sẽ nhìn thấy khi chúng ta nói về PHP phát triển web, bởi vì nó có nghĩa là chúng ta có thể vãi ra PHP và HTML. 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. Nhưng thêm vào đó trong các Video về phát triển web PHP. Vì vậy, cú pháp của PHP là gì? Đó là những gì bộ phim này là tất cả về. Chúng ta hãy nói về nó. Vì vậy, để bắt đầu ra, các biến. Các biến PHP tồn tại. Có hai lớn sự khác biệt từ C. Việc đầu tiên là có không có loại specifier. Chúng tôi không cần phải nói int, char, float, tất cả những thứ đó. Chúng tôi không cần phải làm điều đó nữa. PHP là một ngôn ngữ hiện đại. 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 đoán như những gì bạn đang cố gắng để làm. Vì vậy, đó là khá tốt đẹp. Đ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. Đó chỉ là một cái gì đó để làm quen. Đó là một chút lạ, bởi vì nó là như vậy mà PHP có thể hiểu những gì là một biến và những gì không. Vì vậy, mỗi tên biến bắt đầu với một dấu đô la. Vì vậy, trong C, có thể nói điều gì đó như thế này, int x = 54. Chúng tôi không cần phải làm điều đó nữa trong PHP. Chúng tôi chỉ có thể nói rằng $ x = 54. 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 tập tin tiêu đề, chúng ta có thể nói cụm từ string = "Đây là CS50." Chúng tôi không cần phải làm điều đó trong PHP, mặc dù. Chúng tôi chỉ có thể nói $ cụm từ = "Đây là CS50." 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, hay đúng hơn PHP hiểu những gì là một chuỗi. Nó tách biệt với một mảng của nhân vật như nó là trong C. Tất cả các yêu thích của bạn câu điều kiện từ C vẫn có sẵn để bạn có thể sử dụng. Vì vậy, không có sự chuyển đổi lớn ở đó. Chúng tôi có thể say-- chúng ta có thể có nếu phát biểu như thế này. nếu $ y 43, hoặc $ z = 15. Vì vậy, đó là khá đơn giản. Chúng ta có thể có nếu và khác. Chúng ta có thể có nếu và nếu người nào khác. Và nhận thấy một cái gì đó khá tốt đẹp ở đây, và điều này 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 chức năng gì chúng ta không sử dụng ở đây? Chúng tôi đang sử dụng == để so sánh biến, $ name, với một chuỗi. Chúng tôi không thể làm điều đó trong C, phải không? 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ỳ người anh em họ liên quan của nó. Và như vậy đã, chúng ta thấy những lợi thế này. Chúng tôi không có làm điều gì đó như ngớ ngẩn hoặc có lẽ unintuitive như gọi một chức năng gọi là StrComp nếu tôi chỉ muốn thử nghiệm cho dù một giá trị bằng một chuỗi. 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. Vì vậy, có một lợi thế. Đôi khi, bằng cách này, có lẽ bạn thấy gì khác nếu như một từ, elseif. Và đó là OK trong PHP là tốt. Vì vậy, đôi khi bạn có thể thấy điều đó. Nó không phải là một lỗi đánh máy. PHP thực sự hiểu elseif. Tôi không biết tại sao họ quyết định để thực hiện điều đó, nhưng như chúng ta đã thấy nhiều lần suốt video của chúng tôi cho đến nay, 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, vì vậy việc thoát khỏi không gian đó rõ ràng là một lợi thế lớn. Vì vậy, đó là nếu và elseif. Chúng tôi cũng có những hành bậc ba, thu hồi dấu hỏi chấm, 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. Và rõ ràng, trong việc này, những gì chúng tôi đang cố gắng để làm ở đây được gán cho biến thư $ hoặc là đúng hay sai, tùy thuộc vào việc $ var là một ký tự chữ cái. 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. Đây là loại tương đương trong PHP. Các chức năng rõ ràng gọi ctype_alpha, nhưng đó là cách chúng tôi làm điều đó trong PHP. 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. Nếu $ var không phải là một lá thư, $ thư là sai. Chúng tôi cũng có báo cáo chuyển đổi vẫn còn. Chúng ta nhớ lại những từ C là tốt. Ở 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. Vì vậy, PHP có mà được xây dựng trong. Chúng tôi không cần các thư viện CS50 nữa. Chúng tôi chỉ có thể sử dụng chức năng readline. In gì đó là sẽ làm là ra thông điệp, "nhà nước của bạn, xin vui lòng ", và sau đó nhấp nháy nhanh chóng chờ đợi cho người dùng nhập vào một số thông tin. Bây giờ nhận thấy điều gì khác chúng ta có thể làm gì với switch. Nếu bạn đã sử dụng nó trước, bạn có thể nhớ lại rằng switch đượ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. Và trên thực tế, câu lệnh switch trong PHP là linh hoạt hơn một chút hơn người anh em họ của nó từ C. Bản lề. 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 ở đó. Chúng tôi có trong khi vòng mà đếm 1-100 trong trường hợp này. Chúng tôi đã làm trong khi vòng mà đếm từ 1 đến 100, và chúng tôi có cho vòng mà đếm từ 1 đến 100. Vì vậy, không có bước nhảy vọt lớn ở đó. Cú pháp là khá nhiều giống hệt nhau, ngoại trừ bây giờ chúng tôi đang sử dụng đồng USD biến dấu hiệu thay vì 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. Đâ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ù. Mảng. Vì vậy, nhớ lại khi chúng tôi nói về C, để để chúng tôi phát triển và co bộ thông tin, 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, vì mảng C đã được cố định trong kích thước. Chúng tôi không thể thu nhỏ chúng. Chúng ta không thể trồng chúng. 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 hoặc sử dụng danh sách liên kết, trong đó đưa ra một không gian khá chút. Nhưng trong PHP, mảng là không cố định về kích thước nữa. Họ có thể phát triển và họ có thể thu nhỏ. 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 và lần đầu tiên phát hành PHP, chúng tôi quyết định rằng, bạn đã biết, nó sẽ thực sự tuyệt vời nếu chúng ta có thể làm điều này. Và vì vậy chúng tôi thực hiện điều này. 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ự có lập trình front-ốp khái niệm về các loại, 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á. 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, 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. Khai báo một mảng là khá đơn giản. Nó cũng giống như bất kỳ biến khác. $ nums = array (1, 2, 3, 4), mảng là một chức năng đó là xây dựng vào PHP sẽ tạo ra một mảng cho bạn. Đ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. Và có nhiều hơn một cách để làm điều đó. Và chúng ta sẽ thấy điều này rất nhiều trong PHP. 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. Có thường không phải chỉ hai hoặc ba cách để làm một cái gì đó trong PHP, có thường như 10 hoặc 20. Dưới đây là chỉ là một phổ biến Cách khai báo một mảng. $ nums = vuông khung 1, 2, 3, 4. 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. $ - hoặc nó sẽ là int nums vuông khung bằng ngoặc móc 1, 2, 3, 4. Trong PHP đó là $ nums = vuông khung 1, 2, 3, 4. 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. Nếu tôi muốn gì để tack một cái gì đó vào lúc này? 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 trong PHP, sẽ là thứ năm phần tử của mảng. Tôi chỉ có thể nói rằng. Tôi sẽ không phải chịu đựng một seg lỗi, vì mảng của tôi chỉ là sẽ phát triển để phục vụ đó. Đó là khá tốt đẹp, phải không? 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ó. Tôi chỉ có thể nói điều này và chỉ tack nó phải vào đến cùng, hoặc tôi có thể thậm chí chỉ nói $ nums 20 hoặc 1000. Nó không thực sự quan trọng. Nó vẫn chỉ là đi để tack nó phải vào đến cùng. 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, 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, và mảng sẽ co lại để chứa mà bây giờ thiếu hoặc không gian trống rỗng. Có một cách khác để tack một cái gì đó vào một mảng, mà là một chức năng gọi là array_push. 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. 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. 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. Và chúng ta có thể trộn lẫn các loại dữ liệu của chúng tôi. 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, 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 vào mảng đó, có lẽ là một chuỗi, chuỗi "năm", tôi có thể làm điều đó. Và bây giờ mảng của tôi sẽ là 1, true, 3, 4, năm. Từ năm, không phải là nguyên 5. Vì vậy, rất nhiều sự linh hoạt đó. Sự linh hoạt được thậm chí tốt hơn, mặc dù, vì PHP đã hỗ trợ cho một cái gì đó được gọi là một mảng kết hợp. Và chúng tôi loại mơ hồ nói mảng về liên kết trong C 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ả về đang làm cho chính ánh xạ cặp giá trị. Và trong trường hợp này, nếu keys-- chúng ta đã quen thuộc với mảng từ C, các phím số index. 0, 1, 2, 3. 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. Vì vậy, các phím được lập chỉ mục, và các giá trị là những gì có trong đó vị trí mảng, quy định bởi chỉ số đó. 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 nữa không. 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ị. Và vì vậy tôi có thể nói điều gì đó như thế này. 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. $ pizza = khung vuông "cheese" và sau đó loại này đôi mũi tên ký hiệu, 8,99 ", pepperoni," mũi tên 10.99-- 9,99, và như vậy. Và vì vậy những gì đang xảy ra ở đây? Tôi thực sự làm những gì? Tôi đang tạo ra các ánh xạ cặp giá trị quan trọng. Vì vậy, thay vì nói, ví dụ, pizza 0, 1 miếng, pizza 2, Tôi bây giờ có thể nói pizza phô mai, pizza pepperoni, và tham khảo các giá trị liên kết với chúng. Vì vậy, đây là chìa khóa của chúng tôi trong màu xanh lá cây. Cheese, pepperoni, rau, thịt gà trâu. Dưới đây là mũi tên mà làm cho chìa khóa cặp giá trị bản đồ này. Và sau đó ở đây là những giá trị tại vị trí đó mảng. Vì vậy, nó giống như nói rằng mảng 0 bằng 8,99. Điều quan trọng là 0. Các giá trị là 8,99. 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, và những gì tôi tìm thấy ở pizza pho mát này là 8,99. Đó là giá trị mà tôi tìm thấy ở đó. Vì vậy, tôi có thể nói những điều như thế. $ bánh pizza pho mát = 7,99. Nói rằng tôi đang gặp một bán. Tôi muốn dis-- Tôi muốn thả giá của bánh pizza pho mát. 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, 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. 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" và giá trị 13.49. 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. Làm thế nào chúng ta sẽ lặp qua mảng này? Bên phải? Trong C, chúng ta sẽ chỉ có một cho vòng lặp, thông thường, mà sẽ chạy từ 0 đến kích thước của mảng trừ đi 1. 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. 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. Nhưng đó không phải là thực sự trường hợp nữa, phải không? 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ừ, làm thế nào để chúng ta lặp qua tất cả các từ? Vâng, may mắn thay, PHP có một cách để đối phó với điều này quá, và vì vậy chúng ta sẽ nhảy để vòng một giây để 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. 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ự. Bạn có thể sử dụng nó cho bất kỳ loại mảng. Nhưng đó là về cơ bản cùng một ý tưởng như một vòng lặp for, ngoại trừ thay vì sử dụng số chỉ mục, bạn chỉ có cú pháp này lạ nơi bạn gọi mọi phần tử duy nhất tên cho các mục đích của vòng lặp này. Vì vậy, trong trường hợp này, foreach ($ mảng như $ key). Về cơ bản, như nhận xét đó ghi chú, bên trong đó vòng lặp foreach, nó sẽ đi qua tất cả các đơn phần tử của mảng $, mà thường là 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 mà bạn muốn trong PHP. Và mỗi lần ở một vòng lặp for có lẽ bạn đã nói $ array dấu ngoặc vuông $ i, bạn chỉ có thể nói $ key. 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, và do đó bạn có thể sử dụng nó như thế. Vì vậy, ví dụ, chúng tôi đã bây giờ đã nhận mảng pizza của chúng tôi. Tôi đã loại nhét nó vào góc có vì vậy chúng tôi có thể sử dụng nó để làm một ví dụ nhanh chóng. Nếu tôi nói foreach ($ pizza như $ pizza), tốt, những gì đang xảy ra? Vâng, tôi sẽ lặp qua mỗi yếu tố duy nhất của pizza mảng $, và khi làm như vậy, tôi sẽ gọi mỗi phần tử, khi tôi là bên trong của cơ thể đó cho vòng lặp, $ pizza. Vì vậy, đó là sắp xếp của một đứng-in, thu hồi, mà $ bánh pizza là một stand-in cho nói $ pizza dấu ngoặc vuông $ i 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, $ i = 3. 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, và chúng tôi sẽ sử dụng một vòng lặp for để đi $ 0 pizza, pizza $ 1, $ 2 pizza, $ pizza 3. Vì vậy, bây giờ chỉ cần $ pizza được thay thế cho rằng chính cá nhân. Vì vậy, những gì được này sẽ in ra? Tôi in ra $ pizza. Tôi sẽ làm gì để tìm at-- nếu tôi in ra $ pizza, $ i? Bên phải? Nếu tôi sẽ in ra yếu tố thứ i của pizza, những gì tôi sẽ in? Tôi sẽ in ra giá trị tại vị trí đó, phải không? Cũng giống như nếu chúng tôi đã làm này trong bối cảnh của C, chúng ta thường không sử dụng iterator biến, int i = 0, i là ít hơn 3, i ++, để in ra 0, 1, 2, 3. Chúng tôi đang in ra mảng 0, mảng 1, 2 mảng, mảng 3. Và vì vậy những gì này in ra là điều này. Đây là danh sách các giá. 8.99, 9.99, 10.99, 11.99. Bây giờ một ghi chú nhanh chóng ở đây. Một vòng lặp foreach không nhất thiết in ra những thứ trong trật tự. Nó không được bảo đảm. Nó thường làm. Nó thường được dựa vào thứ tự trong đó yếu tố được thêm vào mảng, vì vậy chỉ cần chịu rằng trong tâm trí. Nó có thể không theo thứ tự. Nhưng một vòng lặp foreach sẽ lặp qua mọi yếu tố duy nhất của mảng trong câu hỏi. Trong trường hợp này, một lần nữa, mảng đó là $ pizza. 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ị. Thay vì nói $ pizza như $ pizza, tôi có thể nói điều này. Và nếu bạn nhìn vào những gì tôi đã đánh dấu màu xanh ở đây, nó trông giống như một ánh xạ cặp giá trị quan trọng. 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ì, bạn có thể đoán rằng $ topping sẽ là chìa khóa trong trường hợp này và $ giá là có được các giá trị. 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, và bây giờ tôi có thể tham khảo các khóa và giá trị, mà có thể có ích, Ví dụ, như sau. "A toàn" - điều này là rất nhiều in ấn đi trên here-- "A toàn" đứ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. 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á. Vì vậy, bạn có thể đoán những gì này sẽ in ra? 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, do đó, nó sẽ in một cái gì đó trên một entire-- trên một dòng mã. Nếu tôi có thể tham khảo các khóa và các giá trị, sau đó bây giờ, thay vì chỉ được có thể để in ra các giá, Tôi có thể in ra một cái gì đó như thế này. "A toàn pizza pho mát có giá 8,99 $." Và bây giờ tôi đang sử dụng tất cả các keys-- phô mai, pepperoni, rau, trâu chicken-- và các giá trị. 8.99, 9.99, 10.99, 11.99 Vì vậy, đó chỉ là một cách khác nhau để 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ị, 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ị. Vì vậy, in ra thông tin. Tôi đã thực hiện nó một vài cách khác nhau, bạn có thể thấy. Hai chức năng chúng tôi đã chủ yếu nhìn thấy là in ấn và tiếng vang. Và cho khá nhiều tất cả các tính mục đích, chúng chính xác như nhau. They're-- có một rất tinh tế Sự khác biệt đó không phải là ngay cả giá trị 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 vang vọng là tốt. Và đó không phải là chỉ có hai. PHP có rất nhiều khác nhau cách để in những điều trên, và nó cũng có nhiều cách để tích hợp biến vào giữa chuỗi. Vì vậy, nhớ lại từ C, làm bạn nhớ những gì chức năng 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? Bạn có thể sử dụng điều này hoạt động khá nhiều. printf, phải không? 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. Chúng tôi đã có những năm báo cáo in riêng biệt, bởi vì đó là chỉ cách tôi thực sự biết vào thời điểm đó làm thế nào để in ra các thông điệp. 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. 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. 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. 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 đó. Các% s đầu tiên được thay thế với các giá trị của $ topping. Các% s thứ hai được thay thế với các giá trị của $ giá. Và vì vậy tôi interpellating, mà chỉ là một cách ưa thích nói tôi là gắn bó với biến vào vị trí đó. Vì vậy, tôi đang cắm trong $ đứng đầu nơi đỏ% s và $ giá mà các blue% s là, và sau đó tôi sẽ nhận được thông báo, "A toàn pizza pho mát có giá 8,99 $." Không phải là cách duy nhất tôi có thể làm điều đó, mặc dù. Có lẽ tôi sẽ muốn sử dụng phương pháp này. Đây thực sự là những gì là phổ biến nhất gọi là chất vấn biến. Tôi có thể sử dụng một tiếng vang. Tôi có thể sử dụng một bản in cũng vậy, như chúng ta sẽ thấy. Nhưng những gì đang xảy ra ở đây? Trước hết, tôi phải thoát khỏi các ký hiệu đô la. 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, Tôi đã thực sự định dạng chúng như số liệu tiền tệ với một dấu đô la. 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, và đặc biệt là khi tôi sử dụng phương pháp này của xoăn biến cú đúp phương pháp chất vấn, tôi cần để 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. Nó sẽ thực sự, War in một dấu đô la. Vì vậy, loại analogize nó những gì bạn nhìn thấy ở cuối đó. Nó không thực sự in dấu gạch chéo ngược n, phải không? Nó in ra một ký tự dòng mới. Đây is-- nó không phải đi để in dấu đô la xuyệc ngược, nó sẽ in ra chỉ một nhân vật dấu đô la. Cùng ý tưởng. Trình tự thoát, những gì những điều này được gọi là. Nhưng chú ý rằng tôi không làm bất kỳ loại% s thay thế, Tôi chỉ theo nghĩa đen cắm trong các biến này. 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, chỉ phù hợp với những gì chúng ta đã nói về phô mai để far-- sẽ nhận được cắm vào đó. Và $ giá sẽ là bất cứ giá trị là tại pizza, dấu ngoặc vuông, pho mát, đó là 8,99. Và do đó, điều này cũng sẽ in ra "A toàn pizza pho mát có giá 8,99 $." Và như tôi đã nói, tôi có thể sử dụng in ở đây thay vì echo, và các chức năng được khá nhiều giống hệt nhau. Nó sẽ in ra điều tương tự. Có một cách khác để làm điều đó, và điều này là một lợi thế của PHP làm việc với chuỗi. Chúng tôi có thể làm dây nối. 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, 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. Đó là toàn bộ mess này để làm. Chúng tôi đã phải lb-bao gồm string.h. Đó là một sản xuất, phải không? 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. Vì vậy, tôi concatenating "A" toàn bộ và sau đó bất cứ điều gì giá trị của $ topping là, và sau đó một chuỗi, "chi phí $ bánh pizza" và sau đó nối các bất cứ điều gì giá trị của $ giá, và sau đó vào cuối tôi tacking vào kỳ dấu gạch chéo ngược n. Và vì vậy điều này cũng sẽ in ra "A toàn" - một lần nữa, nếu chúng ta đang nói về người đầu tiên yếu tố mà pizza array-- "A toàn pizza pho mát có giá 8,99 $." 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ỗ 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. PHP có thể xử lý các chức năng. Chức năng là loại tách rời với C, như chúng ta đã thấy. 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, bởi vì nó không thực sự quan trọng. Và chúng ta không chỉ định kiểu dữ liệu của tham số nào, bởi vì họ không thực sự vấn đề, như chúng ta đã thấy trong PHP. Mỗi chức năng được giới thiệu với từ khóa chức năng. Đó 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à. Và chúng ta không cần phải đối phó với chính ở tất cả, 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, bất kể. 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 đi tìm cuộc gọi chức năng, thậm chí nếu nó đến sau. 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, đây là nơi mà bạn bắt đầu. Bạn bắt đầu trên dòng 1 của bạn PHP và làm việc xuống từ đó. 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. Nó dường như mất một tham số, mà tôi gọi $ x. Chức năng này rất phức tạp chỉ để minh họa cho những điều khác nhau. Chúng tôi vẫn còn có giá trị trả lại. Tôi đang sử dụng một vòng lặp ở đây. Nhưng về cơ bản nó chỉ là, cái gì đây số tiền chỉ là $ x $ x lần. 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. Nhưng nó có hiệu quả chính xác giống như nhân $ x $ x lần. Tôi vẫn có thể trả về một giá trị, trong trường hợp này $ kết quả, và tôi đã thực hiện một chức năng trong PHP. Đây là cách bạn có thể sử dụng nó trong ngữ cảnh. Vì vậy, có lẽ tôi là bên trong của một số tập tin PHP. 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, khung góc dấu hỏi php. Trong giữa những người đang có tất cả PHP mà tôi muốn viết. Vì vậy, tôi dường như sẽ get-- Tôi sẽ nhắc nhở người dùng để cung cấp cho tôi một số, cửa hàng biến, lưu trữ trong đó biến $ x, bất cứ điều gì họ đã cho tôi. Sau đó, tôi sẽ để echo hard_square của giá trị đó, và dường như đi tack trên một dòng mới 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 rằng khi tôi làm cho gọi để hard_square, nó biết những gì tôi đang nói về. Bây giờ, tôi cũng có thể làm một cái gì đó như thế này. Điều này là hơi khác nhau. Đó là gần như chính xác giống như những gì chúng ta đã thấy trước đây, ngoại trừ thay vì nói chỉ $ x có như các tham số để hard_square, Tôi đang nói $ x = 10. Vì vậy, đây là một ví dụ về chương trình phòng thủ, 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. Đâ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ự 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ì đó. Chúng tôi luôn luôn phải kiểm tra liệu, ví dụ, 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 kiểm tra rằng, chúng tôi kiểm tra xem chuỗi mà người sử dụng đã cho chúng tôi không bằng null, 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. Ở đây, đây là một cách để bảo vệ chống lại điều đó. 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ì? 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, chúng tôi chỉ cần đi để cắm 10 để thay thế. 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, nhận thấy rằng tôi đang làm một cuộc gọi để hard_square, nhưng không có dấu nhắc cho người sử dụng, phải không? Tôi chỉ làm một cuộc gọi rỗng. Nhưng chức năng của tôi hard_square đang mong đợi một tham số. Những gì được này sẽ in ra? Nó sẽ in ra 100, phải không? Bởi vì người dùng không cho tôi bất cứ điều gì. Và vì vậy tôi chỉ cần đi để giả rằng 10-- 10 là giá trị mặc định. Và vì vậy đây sẽ in ra 100 trên một dòng riêng. File PHP không phải chỉ là một tập tin duy nhất. 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 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. Chúng tôi không làm điều đó trong PHP. Chúng tôi làm một cái gì đó gọi là require_once. Và sau đó là toàn bộ này điều, __dir__ này là những gì? Đó chỉ là một đặc biệt biến hoặc hằng số đặc biệt, thực sự, mà chỉ rõ những gì thư mục hiện tại của bạn là. Và do đó, nó sẽ trông trong thư mục hiện tại của bạn cho một tập tin gọi là cs50.php trong ví dụ này ở đây, và nó sẽ dính vào tập tin đó ở đầu chương trình PHP của bạn, 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. Vì vậy, PHP được sử dụng chủ yếu, nhưng không độc quyền sử dụng, như là một ngôn ngữ lập trình dựa trên web. Đó là thực sự nó như thế nào đến được. Nhưng nó là một đầy đủ ngôn ngữ, như chúng ta đã nhìn thấy. 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, và nó có thể làm một heck của nhiều hơn thế. 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 đó. Chúng tôi có thể chạy các chương trình dòng lệnh. 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 là bạn có một thông dịch viên PHP. 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 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. 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 để bạn có thể giải thích các file PHP. Giả sử bạn, và thường Phiên dịch này được gọi là PHP, và nó thường đi kèm với hầu hết tải hoặc cài đặt của PHP 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 chúng tôi có trong CS50, IDE. Tất cả bạn cần làm là loại tập tin php. Và những gì chương trình của bạn đi làm là nó sẽ chạy qua phiên dịch, đó là sẽ bỏ qua tất cả mọi thứ đó là không ở giữa câu hỏi mark-- hay, góc khung dấu hỏi php, các dấu PHP, và in nó ra, 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. 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, chạy một vài tập tin PHP, trong giao diện dòng lệnh của CS50 IDE. Vì vậy, ở đây chúng tôi đang trong CS50 IDE, và tôi đã tự mở một tập tin gọi là hello1.php. Và rõ ràng, nội dung này tập tin chỉ là các dấu PHP có, và ở giữa, echo ("hello, world"). Đây là một chương trình PHP khá đơn giản. Tôi chỉ cần đi để di chuyển xuống để cửa sổ terminal của tôi ở đây, và tôi sẽ gõ php hello1.php, nhấn Enter. Chào thế giới. Đó có thể là những gì chúng tôi đã mong nó để làm gì rồi chứ? Chúng ta hãy đi lên và đi khác nhìn vào một chương trình. hello2.php. Khá nhiều điều tương tự, không nhiều đang xảy ra ở đây. 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ọ. Tôi đang sử dụng mà chức năng readline một lần nữa. $ name = readline. Đó là nhanh chóng, "Tên của bạn là gì?" Rõ ràng tôi in nó trên một dòng riêng. Và sau đó, do đó, dòng dưới đây đó sẽ là dấu nhắc nơi người dùng có thể nhập tên của họ. Và sau đó tôi đang sử dụng một chút đồng nhân biến ở đây trên dòng 3 để in ra "Hello" và bất cứ điều gì mà người dùng. 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. Vì vậy, chúng ta hãy đi và giải thích chương trình này. 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. php hello2.php. Bạn tên là gì? Doug. Xin chào, Doug. Tôi cũng có một tập tin gọi là hello3.php. Tôi sẽ xóa của tôi màn hình với điều khiển L, và tôi sẽ thực hiện điều đó. Bạn tên là gì? Doug. Xin chào, Doug. Vì vậy, hành vi này là giống hệt nhau để hello2.php, nhưng tại sao nó hello3.php? Vâng, đây là sự khác biệt. Trong trường hợp này, thông báo mà trên dòng 1 ở đây, Tôi có một cái gì đó không phải ở giữa các ký tự phân cách PHP. Tôi chỉ cần in out-- hoặc tôi chỉ cần gõ chữ "Tên của bạn là gì?" 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, và vì vậy thay vì thất bại, nó chỉ cần đi để nhổ nó ra. 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. Tôi chỉ thực sự đi đối với: khi các thông dịch viên PHP thấy này, nó sẽ in ra "Bạn tên là gì?" Sau đó nó thấy, oh, OK, here's-- mọi thứ khác là có được giải thích như PHP, vì vậy đó là lý do tại sao các công trình này. 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, Tôi chỉ có thể có nó bên ngoài của các ký tự phân cách PHP và cho phép các thông dịch viên chỉ in nó ra cho tôi. 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 trong chương trình của bạn. 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. Vì vậy, chúng ta hãy có một cái nhìn ở một vài chương trình trong CS50 IDE nơi chúng tôi minh họa cho ý tưởng này có nhiều bộ phân PHP. OK, vì vậy tôi đã mở một tập tin đây gọi là add1.php. Và thông báo những gì đang xảy ra ở đây. Cũng như trước đây, tôi có một đơn đặt PHP của dấu phân cách. Tôi sẽ in ra tin nhắn, "Xin cho tôi một số." Sau đó, tôi sẽ đọc một dòng và lưu trữ nó trong $ num1 biến. Sau đó, tôi sẽ in ra một lần nữa. Hãy cho tôi một số thứ hai. Đọ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. Thêm chúng với nhau và lưu trữ mà dẫn đến một biến gọi là $ sum, và sau đó in ra, "The tổng của hai số là, "và sau đó chất vấn có các $ sum biến. Vì vậy, chúng ta hãy chỉ chạy này thông qua người phiên dịch để xác nhận rằng đây là những gì chúng tôi mong đợi. php add1.php. Xin vui lòng cho tôi một số, 3. Xin cho tôi một số thứ hai, 4. Tổng của hai số là 7. Đó là 3 cộng với 4. ĐƯỢC? Vì vậy, không có gì ghê gớm ưa thích ở đó. Và bây giờ hãy mở add2.php. Ở đây, tôi đã có một vài PHP phân bộ ở đó, phải không? Dòng 1, dòng 1 và 3-- 3 không có dấu phân cách PHP. Vì vậy, khi các thông dịch viên nhìn thấy họ, nó chỉ sẽ nhổ ra chính xác những gì tôi đã gõ có. Vì vậy, đó là nơi tôi làm tất cả khiến tôi. 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, vì vậy hai dòng là sẽ thực hiện như PHP. Và sau đó trên đường 5, tôi có điều này Điều kỳ lạ ở đây, phải không? Khung góc này dấu hỏi dấu bằng. Tôi thậm chí sẽ phóng to một chút nữa. Bạn có thể thấy điều này là những gì tôi nói về ngay đó, $ này? =. Nó chỉ ra rằng nó rất phổ biến mà lý do mà chúng ta mở ra một bộ PHP các dấu phân cách là in ra một giá trị. Và đó là tất cả chúng ta sẽ phải làm gì. Nhưng thậm chí còn có cách viết tắt cho điều đó. $ = PHP là viết tắt cho nói một cái gì đó giống như $? php echo tổng của num1 và num2. Vì vậy, đây chỉ là một viết tắt cho điều đó. Vì vậy, nếu tôi chạy chương trình này, php add2.php. Tôi sẽ thu nhỏ xuống một chút. Xin vui lòng cho tôi một số, 4. Xin cho tôi một số thứ hai. 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. Tổng của hai số là 8,8. Chức năng mà ứng xử khá nhiều chính xác giống như chúng ta mong đợi, cũng. Và tôi có thêm một mở lên đây gọi là dice.php. Hãy thử điều này một lần nữa. Tôi có thêm một ở đây gọi là dice1.php, mà cũng có, thấy, có câu hỏi khung góc đánh dấu ký hiệu dấu bằng trong đó, 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 có thể mong đợi tạo ra một số ngẫu nhiên. "Bạn lăn một", và nó sẽ tính toán một số số ngẫu nhiên, mod 6 + 1. Vì vậy, mà sẽ cung cấp cho tôi số trong khoảng 1-6. Hãy nhớ rằng mod 6 sẽ cho tôi một số trong khoảng từ 0 đến 5, nhưng nếu tôi là mô phỏng cuộn dice, đó là những gì tôi đang làm ở đây, 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. Và vì vậy đây là một cách để có được tôi trong khoảng 1-6. Tôi đang làm điều này hai lần. Vì vậy, dường như tôi đang lăn hai con xúc xắc trong chương trình này. 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. Bạn lăn một 4 và một 2. 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. Vì vậy, mỗi khi tôi chạy chương trình, Tôi nhận được con số khác nhau, vì mỗi khi tôi làm vì vậy, nó bắt đầu lại. 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. Vì vậy, nếu chúng ta đang sử dụng để chạy chương trình từ C, 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? Đó 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. 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à một công việc để đầu tập tin PHP của chúng tôi. Tôi biết đó là một từ rất ngớ ngẩn. Nó ngắn cho hash bang. Đó là hai nhân vật đầu tiên ở đó. 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. Nó cũng có thể là cho nổ mạnh. Có một vài cách để giải thích nó. 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 hiểu như, oh, tôi muốn bạn thực hiện chương trình này, 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 Cụ thể sống trên hệ thống của chúng tôi. Vì vậy, những gì xảy ra ở đây it's-- là các thông dịch viên hiểu, oh, 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. Và do đó, nó cho phép bạn bỏ qua các bước vì phải nói php something.php. Có một catch khác ở đây, đó là nếu chúng tôi muốn chương trình của chúng tôi để làm việc như mong đợi, chúng tôi 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. 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 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 để làm cho bạn .php file thực thi. 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. 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 gọi là .php. 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 và một tập tin gọi là dice2. Vì vậy, chúng ta hãy nhanh chóng tìm và mở ra add3. 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? Điểm này băm dấu chấm than. 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, Tôi không có bất kỳ cú pháp làm nổi bật nữa, 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 .php, tôi không có lợi ích cú pháp nổi bật nữa. Tập tin này được chỉ cần gọi là add3. Vì vậy, tôi có thể chạy nó sau này với ./ add3 và không ./ add3.php. Vì vậy, các reason-- nó vẫn còn tốt, nó vẫn còn hợp lệ PHP, 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. Đó là sự khác biệt duy nhất ở đây, cộng với công việc. 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. ./ Add3, giống như tôi làm với C. Bash. ./ Phép add3 từ chối. Đây là những gì bạn đang đi để xem nếu bạn quên sử dụng lệnh chmod để thay đổi quyền của các tập tin. Khi nó quay ra, thường xuyên PHP các tập tin có thể không chỉ được thực thi. 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. Chúng tôi đang thực hiện nó. Và vì vậy tôi cần phải thêm các phép thực hiện, chmod a + x để add3. Sau đó, tôi có thể nói ./ add3. Xin vui lòng cho tôi một số. 5, 6. Tổng của hai số là 11. Tương tự như vậy, tôi đã chmoded dice2, vì vậy tôi chỉ có thể gõ ./ dice2, bạn lăn một 1 và 1, bạn lăn một 5 và 4, và như vậy. Vì vậy, đó là khá nhiều Ý tưởng về một cú pháp PHP, phải không? Có rất nhiều để có được thông qua, tôi biết. 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 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. 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ự phải lo lắng quá nhiều về các chi tiết ở cấp thấp, chúng tôi đã phải lo lắng về với C, phải không? Chúng tôi có thể tập trung vào các cao mức thứ mà PHP 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. Vì vậy, nó mang lại cho chúng ta khả năng bây giờ, chuyển từ C đến PHP, để 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. 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. Đây là CS50.