[Powered by Google Translate] [Phần 8] [Ít thoải mái] [Nate hardison] [Đại học Harvard] [Đây là CS50.] [CS50.TV] Chào mừng bạn đến với thứ hai đến phần cuối. Trong tuần này, chúng tôi đang đi để nói về PHP, và sau đó vào tuần tới chúng tôi sẽ làm một xét nhỏ cho quiz 1. Chúng ta sẽ bắt đầu trên trang 3 của vấn đề đặt gói, và chúng tôi sẽ làm việc thông qua phần câu hỏi khá nhanh chóng. Trên trang 3, chúng tôi bắt đầu nói về sự khác biệt này giữa C và PHP trong ý nghĩa rằng PHP là một ngôn ngữ động gõ, trong khi C là tĩnh đánh máy, và có ai thực sự nhanh chóng thực hiện bất kỳ mã hóa trong một cái gì đó như PHP hay Python hay Ruby trước, JavaScript? Hoàn toàn mới? Okay. Tất cả các ngôn ngữ này mà tôi chỉ đề cập là rất khác nhau từ các ngôn ngữ như C và C + + và Java trong ý nghĩa rằng khi bạn khai báo một biến, bạn không phải khai báo loại của biến, vì vậy trong C, chúng tôi đã bị mắc kẹt phải luôn luôn nói này là có được một biến int, hoặc điều này là có được một biến char *, trong khi với PHP, Python, Ruby, với rất nhiều các ngôn ngữ hiện đại hơn, bạn không phải làm điều đó ở tất cả. Bạn chỉ cần khai báo biến của bạn, và trong trường hợp của PHP bạn khai báo rằng nó là một biến bằng cách đặt trước nó với một dấu hiệu $ và sau đó là kiểu của biến được xác định bởi bất cứ điều gì giá trị của nó đang nắm giữ, đó là loại mát mẻ. Để chơi xung quanh với điều này một chút, chúng tôi có mẫu mã PHP ngay tại đây giữa các thẻ bắt đầu và kết thúc. Chúng tôi đang sử dụng loại này như HTML trong ý nghĩa rằng chúng tôi đã có những dấu ngoặc nhọn để mở và đóng. Bạn sẽ thấy điều này với HTML. Bạn sẽ thấy cùng một loại cú pháp XML. Điều này cho thấy sự khởi đầu của một khối PHP. Này php? Cụ thể cho PHP. Chúng tôi đóng tất cả mọi thứ với a> là tốt? Hãy mở một tập tin trong thiết bị của chúng tôi bằng cách sử dụng bất cứ điều gì bạn muốn. Trong gói tin này, nó nói gọi dynamic.php. Sự thật là bạn có thể gọi nó là bất cứ điều gì bạn muốn, nhưng tên tập tin sẽ đi lên và quan trọng sau đó, do đó, chỉ cần nhớ bất cứ điều gì bạn gọi nó. Tôi sẽ chuyển sang thiết bị, và tôi sẽ làm cho một thư mục cho phần 9 tôi tin rằng chúng tôi đang ở bây giờ. Và chúng ta sẽ đi vào phần 9, và tôi sẽ sử dụng gedit. Hãy xem, gedit, và tôi sẽ gọi dynamic.php tôi. Boom. Trong dynamic.php, vì đây là một tập tin PHP và tôi muốn chạy điều này thông qua các thông dịch viên PHP Tôi cần phải bắt đầu tất cả mọi thứ với những thẻ mở, vì vậy tôi sẽ để bắt đầu những ngay lập tức, cung cấp cho bản thân mình một khoảng trống nhỏ giữa các thẻ, và sau đó là điểm của bài tập này là để chơi xung quanh với chức năng này được gọi là GetType, vì vậy GetType, chức năng này ngay tại đây. Chú ý rằng có không có gạch dưới hoặc không gian hoặc dấu nối hoặc bất cứ điều gì như thế tách 2 từ, và gõ, chỉ cần một từ hoàn toàn. Nhưng điều này sẽ làm là nếu tôi vượt qua trong một biến để GetType, nói $ var hoặc $ x, điều này sẽ cho tôi biết loại trong một định dạng gỡ lỗi những gì tên của loại đó. Chúng tôi sẽ thử nghiệm ở đây. Đặc biệt, nếu bạn nhìn lại vào spec pset chúng tôi đã có một vài dòng khác nhau của mã ở đây. Trong dòng mã đầu tiên chúng ta khởi tạo biến này, $ var, bằng 7, và sau đó chúng tôi có dòng này printf nói rằng hey, printf var là trống. Printf là một trong nhiều cách chúng ta có thể in những thứ trong PHP. Thường thì bạn sẽ thấy hàm echo được sử dụng thay cho printf, nhưng printf chúng ta đều quen thuộc với đã được mã hóa trong C trong một thời gian. Những gì bạn thực sự có thể làm được cho xem các công trình sao chép và dán. Tôi sẽ cung cấp cho một thử. Chúng tôi sẽ trở lại trên thiết bị. Được rồi, và ở đó chúng tôi đi. Và khoảng cách là một funky chút, nhưng ở đây chúng tôi đi. Chúng tôi đã có mã này ở đây. [Sinh viên không tốt phong cách cho tab nó? Xin lỗi? [Sinh viên thông thường để tab nó? Đúng, vì vậy Sam hỏi nếu đó là quy ước để tab nó hay không. Thông thường có. Trong trường hợp này tôi đã chọn không. Thành thật mà nói, bạn sẽ thấy những điều khác nhau giữa các lập trình khác nhau. PHP thường được sử dụng thường xuyên kết hợp với HTML và ngôn ngữ khác, vì vậy đôi khi việc in ấn sẽ xem xét một funky nhỏ nếu bạn thụt trong PHP bắt đầu và thẻ kết thúc. Nó thực sự phụ thuộc. Trong trường hợp này sao chép và dán không dán các tab trong đối với tôi, nhưng nó chắc chắn không, như bạn nói, làm cho nó rõ ràng hơn. Được rồi, nếu bạn lưu mã này trong dynamic.php sau đó những gì bạn có thể làm là đi xuống đến cửa sổ thiết bị đầu cuối của bạn nơi tôi ngay xuống đây gedit, và để làm tương đương của biên dịch sử dụng thực hiện và sau đó chạy mã của bạn trong C tất cả những gì bạn phải làm với các tập tin PHP là bắt đầu lên các thông dịch viên PHP, đó là một chương trình nhỏ được gọi là PHP, và đối số bạn cung cấp cho thông dịch viên là các tập tin bạn muốn giải thích. Trong trường hợp này, dynamic.php. Whoops, nơi mà tôi đặt nó? Ồ, tôi đặt nó trong phần 9, và ở đây tôi. Đó là lý do tại sao. Bây giờ nếu tôi chạy đó một lần nữa chúng ta thấy rằng trong chức năng đầu tiên của tôi gọi GetType var là một số nguyên. Trong var tiếp theo là một chuỗi, và sau đó trong var 1/3 là một boolean. Có gì thú vị về điều này là nếu chúng ta di chuyển trở lại, chúng ta thấy rằng đây là những loại tương tự như những cái mà chúng tôi đã có trong C. Chúng tôi đã có ints trong C. Chúng tôi sắp xếp của chuỗi trong C, để dây không phải là một loại hoàn toàn legit trong ý nghĩa chuỗi CS50 của chúng tôi là thực sự những gì? Xin lỗi? Missy? [Missy] Char *. Yeah, nó là char * này chúng tôi sử dụng. Vào lúc bắt đầu của học kỳ, chúng tôi đã sử dụng loại dây, nhưng nó đã thực sự là một char * dưới mui xe. Chúng tôi chỉ loại được xác định, trong khi các chuỗi trong PHP là một loại thực tế. Không có nhiều công cụ này kiểu char *. Bạn sẽ thấy rằng chúng ta có thể làm nhiều điều hơn nữa với chuỗi dễ dàng hơn nhiều trong PHP hơn chúng ta có thể trong C, và cuối cùng, chúng tôi có kiểu boolean này, và sự khác biệt lớn ở đây là nếu chúng ta di chuyển xuống trở lại, chúng tôi thấy rằng tên của các loại là số nguyên, chuỗi, và boolean thay vì int và bool, và khi bạn chọn ngôn ngữ lập trình khác nhau, giả sử rằng tại một số điểm trong cuộc sống của bạn, bạn sẽ tiếp xúc với những người khác nhau, bạn sẽ nhận thấy quirks chút như thế này trong đó C gọi là số nguyên ints. Một số người gọi nó là số nguyên. Có những điều khoản khác mà bạn sẽ chạy vào. Int lớn, chúng tôi đã thấy hôm nay trong SQL. Ngoài ra còn có số lượng và sau đó bool, boolean, tất cả các loại của sự khác biệt đó. Điều này không phải là terribly thú vị, nhưng bây giờ tôi sẽ cung cấp cho bạn một chút ít thời gian nếu chúng ta thu nhỏ trở lại làm việc thông qua bài tập này ở dưới cùng của trang 3 mà nó yêu cầu những loại tương ứng với các giá trị ở đây ở phía dưới. Chúng tôi có 3,50. Chúng tôi có điều này ngay tại đây, là thú vị. Chúng tôi đã không thấy rằng trước đây, mặc dù nếu bạn đã đi theo trong bài giảng bạn có thể đã biết đó là gì. Sau đó, chúng tôi có điều này, mà điều này là loại của funky. Bạn nhận ra điều này. Điều này trong C là gì? Sam? Điều này sẽ cung cấp cho bạn trong C? Nó sẽ mở ra một tập tin gọi là dynamic.php và làm cho nó có thể đọc được. Yeah, và những gì sẽ là kiểu của biến rằng chúng tôi sẽ chỉ định này sao File? >>. Chính xác, chúng tôi sẽ chỉ định tới một ngôi sao tập tin. Điều này là hợp pháp PHP. Chạy mà. Xem những gì sẽ xảy ra khi bạn vượt qua đó vào GetType. Và sau đó cũng kiểm tra null là gì, những gì có thể được trong PHP. Tôi sẽ cung cấp cho bạn một vài phút. Bạn có nghĩa là có thể sao chép và dán các giá trị này, và sau đó chúng tôi sẽ làm một cuộc gọi chút ngẫu nhiên trên bạn và xem những gì bạn có. [Sinh viên] Tôi có một câu hỏi. << Vâng. Trong một trong các bài giảng, David cho biết có điều gì đó bạn có thể đặt ở đầu của tập tin của bạn vì vậy bạn không phải gõ trong PHP. Cái gì thế? Ông có thể nói về các bang pound, các bang băm. Đó là một chỉ thị rằng nếu bạn đánh dấu tập tin của bạn như là thực thi sau đó những gì nó làm là khi bạn thực hiện các tập tin nó sẽ cho các chương trình bao sử dụng các thông dịch viên PHP để giải thích các nội dung của tập tin. Câu hỏi là dòng này đặc biệt là những gì chúng tôi có thể bao gồm ở trên cùng của các tập tin PHP của chúng tôi không phải bao gồm dòng này PHP hoặc lệnh này PHP bất cứ khi nào chúng ta muốn thực hiện các tập tin? Và bạn thực sự có thể làm điều này với một loạt các tập tin khác nhau. Tôi tin rằng nó phụ thuộc vào nơi nhị phân PHP được lưu trữ, nhưng thường usr / bin / php là một nơi tốt để bắt đầu. Bạn có thể con số này ra một cách chính xác bằng cách quay trở lại thiết bị của bạn và gõ ra php. Lệnh ra khi bạn đang thực hiện nhị phân hoặc một lệnh, nơi các tập tin tương ứng. Này nói với tôi rằng PHP thực sự là răng cưa này tập tin nhị phân được lưu trữ trong usr / bin, đó là nơi mà rất nhiều những chương trình hệ thống được cài đặt. Ví dụ, nếu tôi di chuyển lên đến đỉnh, bây giờ mà tôi đã đặt này #! ở đây Tôi có thể di chuyển xuống, và tôi có thể cố gắng để chạy dynamic.php, nhưng tôi nhận được lỗi về sự cho phép bị từ chối, và điều đó có nghĩa là tập tin này không cho phép thực thi. Nó không được đánh dấu như là một tập tin rằng ai đó có thể chạy. Khi bạn chạy thực hiện hoặc Clang và bạn có một thực thi từ nó trình biên dịch đã đủ thông minh để biết rằng hey, Tôi đang xây dựng một tập tin thực thi. Bạn có thể muốn thực hiện nó, do đó, nó sẽ tự động cấu hình các điều khoản cho bạn. Đây không phải là trường hợp, tuy nhiên, khi bạn tạo một tập tin bình thường từ đầu, lý do thông thường bạn không muốn có bất kỳ tập tin trên hệ thống của bạn được thực thi, do đó, bạn thực sự phải đi vào và tự làm điều đó. Cách dễ nhất để làm điều đó với lệnh chmod, và chmod + x cho biết thêm các bit thực thi bởi vì có chút đọc, viết các bit và bit thực thi, r, w và x, và nói chmod + x sẽ bật bit thực thi cho tập tin sau đó chúng tôi chỉ định, trong trường hợp này sẽ dynamic.php. [Sinh viên] mà bật cho tất cả mọi người? Hãy kiểm tra này ra, vì vậy làm thế nào tôi sẽ kiểm tra xem các cho phép? Bạn có biết làm thế nào tôi muốn kiểm tra xem các điều khoản của một tập tin? [Không nghe được sinh viên phản ứng] Xin lỗi >> [Sinh viên] XSD. XSD cho chúng ta các tập tin trong hacks. Liệt kê tất cả các tập tin,-l, sẽ cho tôi xem tất cả các file trong thư mục của tôi loại trong dài danh sách chi tiết của họ, và vì vậy ở đây chúng ta thấy rằng tập tin này dynamic.php Lần sửa cuối: 05 tháng mười một tại 04:21 PM. Chủ sở hữu của tập tin này được jharvard. Đó là người dùng đăng nhập. Đó là người sử dụng tôi đang làm việc như, và nếu bạn cũng có trong thiết bị, bạn tôi cũng làm việc như jharvard người sử dụng. Bạn đang ở trong nhóm sinh viên, và đây là những điều mà bạn sẽ thấy thường xuyên đủ. Chúng ta có thể đi vào nhiều chi tiết ở đây, nhưng đối với hầu hết các phần những gì bạn muốn để xem xét khi bạn đang tìm kiếm để xem có hoặc không có một tập tin thực thi là chủ yếu người dùng sở hữu các tập tin, chủ sở hữu, do đó, điều này jharvard, và sau đó chúng tôi có cho phép các bit trên bên trái, và cách đọc này là các bit cuối cùng thường được sử dụng để đánh dấu hay không, ít nhất là trong trường hợp này bit cuối cùng này thường sẽ được thiết lập quảng cáo để chỉ ra rằng tập tin là một thư mục và không chỉ là một tập tin bình thường. Sau đó, sau đây 3 bit ngay tại đây xác định các điều khoản chủ sở hữu của tập tin có, do đó, trong trường hợp này jharvard, là chủ sở hữu của tập tin, có thể đọc và ghi tập tin này, nhưng có một dấu gạch ngang nói rằng jharvard không thể thực thi tập tin này. 3 bit tiếp theo là cho nhóm, vì vậy đây là nhóm sinh viên, vì vậy nếu có nhiều người dùng trên thiết bị của tôi, và chúng tôi đã có nhiều người sử dụng như là một phần của nhóm sinh viên, sau đó tất cả họ đều có thể đọc tập tin này, nhưng họ không thể viết nó, và tương tự như vậy bất cứ ai khác, thế giới chỉ có thể đọc tập tin này là tốt. Có một writeup tốt về việc này, để bạn có thể đọc trực tuyến. Trong spec bộ vấn đề, chúng ta đi vào chi tiết hơn. [Sinh viên] 218 giới thiệu với thế giới? 218 được ra khỏi đỉnh đầu của tôi Tôi quên, nhưng không có. Hãy xem. Tôi xóa trên đó ngay bây giờ. Trở lại những gì chúng tôi đã làm với điều này + chmod x nơi mà chúng tôi muốn để cho phép thực thi dynamic.php, và câu hỏi là có hay không này sẽ cho phép thực thi để tất cả mọi người hoặc chỉ jharvard, và chúng tôi có thể thấy điều này bằng chạy các lệnh và gõ ls-l, và bây giờ chúng ta thấy rằng nó được đánh dấu như là thực thi. Bạn thấy rằng có một sự thay đổi màu sắc. Bây giờ dynamic.php được liệt kê trong màu xanh lá cây, và nó trông giống như câu trả lời cho câu hỏi là gì, Charlotte? [Charlotte] Chỉ jharvard. >> Chỉ jharvard, yeah. Nếu chúng ta muốn bật bit thực thi cho tất cả mọi người làm thế nào chúng ta có thể làm điều đó? Bất kỳ suy nghĩ >> A + x? Yeah, chính xác. Charlotte nói chúng ta có thể làm chmod x + của dynamic.php, và bây giờ nếu chúng ta chạy ls-l chúng ta thấy rằng thực thi bit có thực sự bật cho tất cả mọi người. Và bạn có thể thực sự làm đảo ngược này, vì vậy bạn có thể biến nó cho tất cả mọi người sử dụng trừ. Bây giờ nó tắt, và bây giờ chúng tôi có thể biến nó trở lại cho jharvard để chúng tôi thực sự có thể chạy nó bây giờ, và bây giờ bạn nhìn thấy khi chúng tôi chạy mã này đặc biệt #! dòng ở đầu trang, #! dòng, nói với vỏ, nói với thiết bị đầu cuối của chúng tôi hey, khi tập tin này được chạy, sử dụng / usr / bin / php để giải thích điều này tập tin và sau đó in sản lượng. [Câu hỏi sinh viên không nghe được] Chắc chắn rồi, hãy để tôi di chuyển trở lại. Chỉ như thế này. Bạn sẽ thấy tất cả các chỉ thị bắt đầu với bảng này và sau đó là dấu chấm than, đôi khi được gọi là một tiếng nổ, xe củ băm. [Sinh viên] Làm thế nào chúng ta có thể chạy nó với php dynamic.php trước khi chúng tôi làm cho nó thực thi? Câu hỏi là làm thế nào chúng ta có thể chạy điều này bằng cách sử dụng nhị phân PHP trong khi dynamic.php là không thực thi? Điều này là siêu quan trọng vì đây chính là cách nó sẽ làm việc khi bạn viết đặt vấn đề 7. Hầu hết các PHP thời không thực thi trực tiếp. Cách mà các công trình là bởi vì nó là nhị phân PHP đó là thực thi. Thông dịch viên là điều đang được thực hiện, và như vậy những gì nó làm là nghĩa đen slurping trong toàn bộ nội dung của tập tin dynamic.php của chúng tôi và đường đi của dòng và thực hiện các lệnh, do đó, nó sử dụng file PHP của chúng tôi như là một danh sách các hướng dẫn. Nó không phải trực tiếp thực hiện nó. Đó là nơi mà chúng ta nói rằng những tập tin này được giải thích ở thời gian chạy. Nó là một ngôn ngữ thời gian chạy thay vì một cái gì đó được xác định tại thời gian biên dịch, không phải là một ngôn ngữ biên dịch như C. Có cách nào để có được một thời gian chạy ngôn ngữ hành động như thể đó là một thời gian biên dịch ngôn ngữ, như nếu bạn có tất cả các hoạt động được thực hiện tại máy chủ chứ không phải là bạn biết những gì tôi có ý nghĩa? Có, vì vậy câu hỏi là là có một cách để có được ngôn ngữ thời gian chạy hành động giống như các loại thời gian biên dịch ngôn ngữ? Và có, tôi có nghĩa là, là một khu vực hoạt động của nghiên cứu cho rất nhiều của các công ty này. Tôi tin rằng Facebook đã thực hiện rất nhiều công việc với PHP và biên dịch nó xuống, làm cho nó nhanh hơn, tối ưu hóa nó kể từ khi trang web của họ được xây dựng trên PHP. Nếu bạn đã làm theo node.js ở tất cả, mà là một loại của một thông dịch JavaScript để có thể chạy JavaScript bên ngoài trình duyệt, bên ngoài của trình duyệt web của bạn, là do các JavaScript sẽ chỉ chạy bên trong của Firefox hoặc Chrome, và nó sẽ được sử dụng để làm mát animations xảy ra trên một trang web và làm cho trang web của bạn năng động. Đó là được xây dựng trên rất nhiều công việc mà Google đã thực hiện để làm cho JavaScript và C + + kết hợp với nhau, do đó, có rất nhiều nghiên cứu đang hoạt động để có được những ngôn ngữ tương tác và tối ưu hóa chúng, chủ yếu bởi vì rất nhiều người có thể mã trong PHP và JavaScript bởi vì nó dễ dàng hơn nhiều. Đó là đẹp hơn rất nhiều. Bạn không có con trỏ. Bạn không cần phải loại nổi xung quanh. Họ muốn để đạt được những lợi ích của các ngôn ngữ thời gian biên dịch với việc kiểm tra tất cả các loại và tốc độ và bộ nhớ sử dụng thấp hơn và tất cả những điều đó trong khi vẫn duy trì sự linh hoạt và dễ dàng sử dụng những cái mới hơn. Về kế hoạch ban đầu của chúng tôi tấn công. Chúng tôi đã có một vài trong số những câu hỏi này ở đây trong spec bộ vấn đề của chúng tôi. Hãy đi qua chúng thực sự nhanh chóng, và chúng tôi sẽ đi quanh phòng. Charlotte, loại là 3,50? Charlotte] Đó là một đôi. >> Đó là một đôi. Jimmy, tiếp theo là gì? >> Một mảng. Một mảng, awesome, và Jared, fopen là những gì? Jared] Đó là một nguồn tài nguyên >> Đó là một nguồn tài nguyên. Đó là loại một cái mới, không phải một ngôi sao tập tin, không phải là một tập tin. Đó là một nguồn tài nguyên là loại trong PHP, và tôi xin lỗi, Ella, null cuối cùng là gì? Null. Null, thế nào là nó đánh vần trong PHP? >> Theo cùng một cách. Theo cùng một cách, thủ đô >> Yeah? Yeah, tất cả các quyền. Ở đây chúng tôi đi, chúng tôi đã có một đôi, chúng tôi đã có một mảng, chúng tôi đã có một nguồn tài nguyên, và sau đó chúng tôi đã có vô giá trị. Hãy xem bây giờ bạn nhìn thấy chúng ta hãy xem, vì vậy bây giờ tôi đoán những gì tôi cũng muốn làm là kéo lên trang web này ngay tại đây, điều này php.net / dẫn sử dụng, vì vậy nếu bạn sao chép đó và mở ra một trình duyệt web. Tôi sẽ để kéo lên Chrome, đưa. Tôi muốn cho bạn thấy điều này không chỉ vì chúng ta có thể nói chuyện cả ngày về loại và tất cả các công cụ thú vị mà là bởi vì đây là hướng dẫn PHP, và có rất nhiều các lập trình viên PHP ra khỏi đó. Hiện có rất nhiều các trang web PHP ra khỏi đó, và kết quả là, có rất nhiều tài liệu về PHP, và sử dụng, php.net, là một nơi thực sự tốt để đi bất cứ khi nào bạn có câu hỏi về cách tốt nhất để làm X trong PHP là những gì hay một chức năng giống như những gì? Chỉ cần loại quen thuộc với những gì trông giống như vì bạn sẽ được đến đây thường xuyên, một chút cho vấn đề thiết lập 7. Nếu bạn kết thúc làm một dự án cuối cùng sử dụng PHP điều này sẽ là một nơi bạn sẽ trở nên rất quen thuộc với. Thường là cách người làm việc này là họ sử dụng Google để tìm kiếm cho các trang web, và họ không sử dụng hộp tìm kiếm ở phía trên bên phải, mà là loại nhỏ. Nếu bạn đang Googling xung quanh cho một cái gì đó để làm với PHP và bạn thấy một trong các liên kết hướng dẫn sử dụng bật lên bạn thường có thể dựa vào đó như một nguồn lực khá tốt. Awesome, trong các loại, chỉ cần ra khỏi tò mò, những người thân mà chúng tôi đã không nhìn thấy? Bất cứ điều gì chúng tôi đã không nhìn thấy ở đây? [Sinh viên Resource. Chúng tôi thấy tài nguyên với các cuộc gọi fopen. [Sinh viên] Đối tượng Đối tượng >> chúng tôi đã không nhìn thấy chắc chắn. Callbacks chúng tôi đã không nhìn thấy. Có một số các giả các loại. Chúng tôi chắc chắn chỉ nhìn thấy số nguyên và tăng gấp đôi. Chúng tôi không thấy một số người khác, vì vậy nếu chúng ta click vào số nguyên chúng ta có thể thấy được có bất kỳ số nguyên khác rằng họ có ở đây? Họ có tất cả số nguyên, số nguyên, số nguyên. Một số ngôn ngữ có các loại số nguyên lớn hơn, như chúng ta đã thấy trên MySQL int và int lớn. Cool. Vì vậy, PHP hướng dẫn sử dụng. Hãy quay trở lại để spec bộ vấn đề của chúng tôi, và bây giờ chúng ta sẽ di chuyển xuống trang 4. Một trong những điều đó xảy ra khi bạn nhận được các thứ tiếng mà không có gõ tĩnh này, do đó, các ngôn ngữ mà bạn phải khai báo loại của một biến lên phía trước là bạn nhận được trường hợp nơi bạn có thể bắt đầu có các biến của các loại khác nhau tương tác với nhau, và PHP hiện điều này khi nó cố gắng để làm những gì mà họ coi là điều hợp lý nhất để làm khi bạn có 2 loại khác nhau tương tác với nhau. Ví dụ, nếu chúng ta nhìn vào các dòng mã ngay tại đây bạn thấy rằng chúng tôi đã có những gì sẽ xảy ra khi chúng tôi cố gắng và thêm chuỗi 1 số nguyên 2. Điều gì sẽ xảy ra nếu chúng tôi cố gắng và thêm một chuỗi đó là không phải là một giá trị số nhưng các ký tự chứ không phải thực tế, CS số 50? Sau đó, chúng ta sẽ thấy có bất cứ điều gì khác nhau, điều đó xảy ra nơi thay vì thêm một chuỗi với một số chúng ta đang thêm một số vào một chuỗi, và vv và vv để điểm mà chúng tôi đang nhận được một số loại công cụ kỳ lạ ngay ở đây, nơi chúng tôi đã có 7 + đúng. Những gì heck không có nghĩa là? Nếu bạn đi trước và dán một số của mã này vào thiết bị của bạn. Bạn có thể giữ nó trong dynamic.php. Chúng tôi sẽ xem những gì sẽ xảy ra. [Sinh viên] Chỉ cần sử dụng in ấn, không phải printf? Yeah, vì vậy bạn sẽ thấy rằng in cũng là một chức năng hợp lệ cho việc in ấn trong PHP. Có nhiều cách khác nhau để làm việc đó. Chúng ta sẽ thấy với một vài ví dụ sau khi chúng tôi bắt đầu nói chuyện về vấn đề duy nhất mà chúng tôi đang đi để viết và sau đó là vấn đề nồng độ mà chúng tôi đang đi để viết rằng mặc dù chúng ta có fopen và fclose đó là thường không phải là cách đơn giản nhất để đọc nội dung của một tập tin. PHP có rất nhiều những holdovers C-. [Sinh viên] Khi tôi đặt trong tất cả 6 trong những điều tôi chỉ nhận được một số như một đầu ra. [Nate H.] Khi bạn đặt trong tất cả 6 trong những việc này. Hãy xem nó bởi vì nó có thể là- một điều là các cuộc gọi in không được chấm dứt vào cuối với dòng mới. Không có dòng mới tách mỗi của các cuộc gọi in, do đó, có thể bạn đang nhận được một số lượng lớn, và nó thực sự chỉ là hỗn hợp của các ký tự dòng mới. [Sinh viên] Được rồi, làm thế nào để tôi làm cho chắc chắn Vâng, có một loạt các cách khác nhau. Bạn có thể đặt vào trong một bản in của một ký tự dòng mới, một tiếng vang của một ký tự dòng mới, in của dòng mới. [Sinh viên] Vì vậy, echo là điều tương tự như printf? Printf giống như C printf nơi bạn đang in một chuỗi định dạng. Bạn đang cung cấp các chuỗi định dạng và sau đó tất cả các biến giữ chỗ. Nó thường cái gì đó là không được sử dụng chúng ta hãy xem, như một từ chối trách nhiệm, Tôi không quen thuộc với PHP hơn tôi với các ngôn ngữ web khác, và khi tôi đã được lập trình trong PHP Tôi thường không sử dụng printf vì tôi tìm thấy nó nhanh hơn để sử dụng các khả năng nội suy chuỗi mà nó có, mà chúng ta sẽ đi vào và tôi sẽ cho bạn thấy chỉ trong một giây, ngược lại trong C chúng ta phải để làm điều này hacky để có được nó để in ra đúng cách. Bạn thực sự có thể đặt các biến trực tiếp thành chuỗi trong PHP. Printf là loại quá dài cho những gì tôi thường làm. Có, Ella. [Ella] Nói chung, nếu bạn nhận được lỗi phân tích cú pháp không có nghĩa là như C, nó không cho bạn biết chính xác nơi sai lầm và nó là gì, do đó, điều đó có nghĩa là xem xét thông qua toàn bộ mã của bạn và con số nó ra? Nó thường nhắm mục tiêu hơn hơn. Tôi nghĩ rằng trong trường hợp đó là một ít đi, vì vậy tôi nghĩ rằng trong trường hợp đó, chúng ta đang thiếu một dấu chấm phẩy. Nó đã cố gắng để làm cho tinh thần của tất cả mọi thứ, do đó, giống như những ngôn ngữ thông dịch, các thông dịch viên sẽ cố gắng và làm tốt nhất của mình để làm việc tất cả mọi thứ một cách thích hợp. Bạn sẽ thấy, ví dụ, trong JavaScript bạn sẽ thường dòng báo cáo kết thúc bằng một dấu chấm phẩy giống như họ làm trong PHP, giống như họ làm trong C. Trong JavaScript, một số người phiên dịch JavaScript trong rất nhiều các trình duyệt sẽ đặt dấu chấm phẩy cho bạn xảy ra nếu bạn bị mất chúng. Họ sẽ cố gắng và dành chỗ cho một số sloppiness trên một phần của bạn. Đó là nơi nó có thể được cố gắng và cố gắng và cố gắng để làm cho mọi công việc, và sau đó cuối cùng nó sẽ nhận được đến một điểm mà nó nói không sao, Tôi không thể làm cho mọi việc làm việc trên giải cứu, và đó là nơi mà bạn sẽ nhận được một số dòng có thể có vẻ một ít từ địa điểm chính xác. Được rồi, vậy chúng ta hãy đi qua này thực sự nhanh chóng. Chúng tôi rời đi với Ella, vì vậy hãy để Missy, và Missy, in chuỗi 1 cộng với số lượng không những gì 2 cung cấp cho bạn? [Missy] 3 >> 3. Điều đó làm cho tinh thần? ? Liệu nó cung cấp cho bạn một số? Liệu nó cung cấp cho bạn một chuỗi? [Missy] Một số >> Đó là một con số. Nhưng nó in nó, do đó, nó sẽ cung cấp cho bạn một số loại của chuỗi. Một điều chúng ta có thể làm để kiểm tra này ra là nếu chúng ta làm $ var = 1 + 2 và sau đó chúng ta nói âm vang của GetType, vì vậy chúng tôi đang sử dụng một loại thứ ba in ấn ở đây. Bây giờ chúng ta có thể xem những gì xảy ra ở đây. Ở đây những gì chúng tôi đã có là chúng tôi đã nhận một số nguyên trong số này. Mặc dù chúng tôi đã được thêm chuỗi này đến một số, chúng tôi đã không nhận được một chuỗi của nó, giống như Missy nói. Chúng tôi đã nhận được một số nguyên. Được rồi, vậy chúng ta hãy xem, bên cạnh lên, Kevin. CS + 50 >> [Kevin] 50. [Nate H.] 50. Điều đó làm cho tinh thần? [Kevin] Yeah. [Nate H.] Tại sao? Tại sao nó có ý nghĩa đối với bạn? Kevin Bởi vì nó chỉ có các chuỗi, có giá trị bằng không số. Yeah, tuyệt vời. Loại tình huống không rõ ràng, nhưng đó là tốt để biết những gì sẽ xảy ra. Stella, điều gì sẽ xảy ra tiếp theo với số lượng 1 + chuỗi 2 không? [Stella] 3 >> 3 lần nữa. Và trong trường hợp này, chúng tôi nhận được một chuỗi hoặc một số? Hãy cung cấp cho một thử. Bất kỳ ai nhanh hơn tôi nhận được câu trả lời? Charlotte? Oh, tôi didn't-okay, chúng ta hãy xem, chúng tôi đang đi để làm cùng một loại điều nơi mà chúng tôi đã có một số cộng với một chuỗi, và chúng tôi sẽ để echo loại, xem những gì chúng tôi nhận được. Chúng tôi cũng nhận được một số nguyên. Nó không quan trọng đó là một trong các chuỗi, đó là một trong số. Chúng tôi vẫn đang đi để có được một số nguyên. Nó vẫn sẽ làm những gì chúng ta có thể mong đợi. Được rồi, vì vậy Sam, khoảng 90 + 9 chai bia trên tường? [Sam] 99 >> 99. Không có chai bia trên tường, mặc dù. Nó cho chúng ta nhiều hơn một chút thông tin về những gì đang xảy ra. [Sam] Nếu bạn đã viết 9 trong những lá thư sau đó bạn sẽ có 90, phải không? [Nate H.] Yeah. Câu hỏi là nếu chúng ta muốn viết 9 như N-I-N-E chúng ta đã có thể nhận 99 hoặc 90? Chúng tôi nhận được 90. Đó là nghĩa đen chỉ tìm kiếm cho các ký tự chữ số. Nó không đủ thông minh để nhận ra những từ số lượng và các công cụ đó. Vâng. [Sinh viên] Có một điều như typecasting trong PHP? Có đó, và nó chính xác theo cách bạn sẽ làm điều đó trong C. Những gì về 10/7, Charlotte? [Charlotte] 1,4285. [Nate H.] Yeah, vì vậy những gì có thể là đáng ngạc nhiên về điều này? Điều gì sẽ xảy ra nếu bạn đã làm điều này cùng một loại điều trong C, nếu bạn đã làm 10/7 trong C? [Charlotte] Nó sẽ chỉ cung cấp cho bạn tùy thuộc vào cách bạn typecasted Tôi đoán nó sẽ cung cấp cho bạn chỉ có một số giới hạn các chữ số sau dấu thập phân. Yeah, do đó, một số giới hạn các chữ số sau dấu thập phân. Những gì khác có được nó sẽ cung cấp cho bạn bất kỳ chữ số sau dấu chấm thập phân? Thường không, vì vậy một lần nữa, tùy thuộc vào cách bạn đang typecasting nó nó có thể hoặc không có thể chuyển đổi một số điểm nổi. Ở đây nó là loại tốt đẹp mà nó đã làm. Nếu chúng tôi cho các bạn trở lại khi chúng tôi bắt đầu làm điều này loại công cụ trong C nó có thể sẽ có ý nghĩa nhiều hơn một chút rằng nó không chỉ cần đi 1. Và cuối cùng, Jamie, những gì về 7 + đúng? [Jamie] 8. >> 8. Điều đó có nghĩa là gì? Tôi đoán nó chỉ cho đúng giá trị của 1. Yeah. Điều gì sẽ xảy ra nếu chúng ta thay đổi điều đó là sai? [Sinh viên] 7. Yeah, vì vậy hãy nhớ nơi mà chúng ta nói về các giá trị nhị phân, 1 là, 0 là tắt? Bây giờ chúng ta có thực sự là 1, 0 là sai, và bạn có thể không nhìn thấy điều này trong các ví dụ C mà chúng tôi đã làm điều này học kỳ vừa qua, nhưng lịch sử kiểu bool trong C không phải là một loại thực, do đó, mọi người đã sử dụng 0 và 1 ở vị trí đúng và sai. Đây là một biểu hiện của điều đó. Rồi, vì vậy một trong những phần quan trọng về tất cả những điều này là chúng ta có những loại khác nhau. Họ có thể tương tác với nhau. Họ thường có thể tương tác với nhau theo nhiều cách là tốt đẹp, như chúng tôi đã nhìn thấy ở đây. Đó là tốt đẹp để có thể có chuỗi 1 và số 2, thêm chúng với nhau và có được 3. Điều đó làm cho ý nghĩa. Tuy nhiên, khi bạn đang viết các trang web, và đặc biệt là khi bạn đang xử lý dùng nhập vào, do đó, nói rằng bạn đã viết một mẫu web thu thập thông tin từ người dùng và sau đó đi để xử lý nó trở lại vào cuối, các máy chủ bên trong mã PHP của bạn nếu bạn đang mong rằng giá trị mà người dùng gõ vào và nộp để hình của bạn là một số nguyên hoặc là một số điểm nổi hoặc một cái gì đó như thế bạn cần phải bỏ nó một cách rõ ràng và sau đó làm một số kiểm tra kiểu. Bạn không muốn chỉ dựa vào kiểu hệ thống này tung hứng để làm cho mọi thứ làm việc, đặc biệt là vì lý do an ninh và chỉ cho sự vững mạnh của trang web của bạn. Chỉ cần một cái gì đó để ghi nhớ rằng bất cứ khi nào bạn đang xử lý dữ liệu mẫu, bất cứ điều gì mà đến trong bài viết hoặc superglobals get hãy chắc chắn rằng bạn luôn luôn xác nhận nó và chuyển đổi nó và định kiểu nó. Và cũng giống như chúng tôi đã nói chuyện về một thời điểm trước đó typecasting trong PHP là chính xác giống như trong C, nơi bạn có các dấu ngoặc đơn và sau đó các loại. Giữ cho rằng trong tâm trí. Một chức năng mà sẽ có ích khi bạn đang làm điều này là chúng tôi đã sử dụng và điều này là loại như là một dành chúng tôi đã sử dụng chức năng này GetType ngay tại đây để tìm ra các loại của một biến, và trong khi đây là tiện dụng để gỡ lỗi và để xem những gì của một biến kiểu bạn không muốn sử dụng này, ví dụ, trong một điều kiện bạn đang kiểm tra để xem nếu GetType của $ var = số nguyên làm điều gì đó. Điều này là xấu, xấu, xấu. Thay vào đó là các chức năng này được gọi là số nguyên, chuỗi, là mảng mà bạn muốn sử dụng để thay thế, do đó, trong trường hợp này những gì tôi muốn làm thay vào đó của anh chàng này ngay tại đây được sử dụng là số nguyên var. Và họ thường được gọi là * is_ trong ý nghĩa là bạn có thể thay thế * với số nguyên, chuỗi, vân vân, và chỉ để chắc chắn rằng thực sự nhanh chóng này là int php. Hình như bạn có thể làm, hoặc là int hoặc có cũng là số nguyên? Có, bí danh, bí danh số nguyên int. Cool. Làm thế nào chúng ta đang làm gì? Hãy chọn lên tốc độ một chút. Bây giờ chúng ta sẽ nói về mảng, do đó, bạn có thể thấy trong phần tiếp theo của spec, chúng tôi nói về việc làm thế nào các mảng trong PHP hơi khác so với họ đang có trong C. Trong sự thật, chúng loại của một hỗn hợp của các mảng mà bạn đã biết và yêu thích trong C nơi mà tất cả mọi thứ cùng loại được lưu trữ liên tục, liên tục kế nhau trong bộ nhớ, và bạn có các chỉ số này số. Bạn có chỉ số 0, 1 chỉ số, chỉ số 2, và bạn lưu trữ các giá trị vào những chỉ số. Bạn cũng có trong C, khi bạn đã viết Speller, rất nhiều bạn đã làm các cách tiếp cận bảng băm, và bạn đã thấy rằng chúng tôi đã có một loại khác nhau của lưu trữ nơi chúng tôi đã lập bản đồ một chìa khóa để một giá trị, do đó, khi bạn cố gắng để lưu trữ một cái gì đó trong bảng băm bạn đã có để xác định rằng bạn muốn để lưu trữ nó với một phím cụ thể, và khóa đó xác định vị trí của giá trị và nơi mà nó sẽ được lưu trữ. Bạn đã loại cả những khái niệm xảy ra cùng một lúc trong một mảng PHP, và kết quả là, chúng ta thường gọi là các mảng kết hợp nơi chúng tôi đang kết hợp một chìa khóa vào một giá trị. Trong phần tiếp theo này, chúng tôi nói về một mảng PHP đơn giản nơi mà chúng tôi có các phím a, b, c, tất cả các chuỗi, lập bản đồ 1 số nguyên, 2, và 3. Và bạn có thể có các phím của các loại khác nhau. Bạn có thể có một số phím có dây, một số phím là các số nguyên. Bạn có thể có giá trị của các loại khác nhau. Bạn có thể có một giá trị mà là một chuỗi, một giá trị đó là một số nguyên, một giá trị mà là một đối tượng hoặc một mảng khác, ví dụ, tất cả trong cùng một đối tượng mảng, đó là loại lạ. Bạn không cần phải có một mảng đó chỉ có một loại nguyên tố trong đó. Bạn có thể có nhiều điều khác nhau xảy ra trong đó. Một điều khác cần lưu ý là khi bạn nhìn thấy một cái gì đó như thế này trong mã của bạn, đó là hợp lệ PHP để khai báo một mảng chỉ như thế này, 0, 1, 2, 3, 4, 5, sẽ khai báo một khởi $ arr là mảng này. Nhưng những gì bạn đang thực sự nhận được dưới mui xe này là loại tiềm ẩn thế hệ của các phím, nơi chúng tôi đã có 0 đến 0, 1 1, 2 đến 2, 3 3. Và nó chỉ ra rằng ngay cả khi bạn có một mảng như chàng này lên đây nơi bạn có a, b và c là các phím và sau đó bạn bắt đầu bằng cách sử dụng phương pháp đẩy mảng bắt đầu sử dụng mảng này như một chồng, vì vậy bạn có thể thấy rằng điều này đối tượng mảng, mảng này thực sự là trở thành quá tải. Chúng tôi có thể sử dụng nó như một mảng. Chúng ta có thể sử dụng nó như một bảng băm. Chúng tôi có thể sử dụng nó như một chồng. Khi bạn bắt đầu đẩy vào mảng này điều đầu tiên bạn đẩy lên này sẽ có chỉ số 0 và sau đó chỉ số 1 và chỉ số 2. Bạn có thể nhận được loại thế hệ tiềm ẩn của phím trừ khi bạn chỉ định rõ ràng. Cách bạn chỉ định phím một cách rõ ràng, tất nhiên, bằng cách sử dụng ký hiệu khung này, tương tự như mảng ngoại trừ thay vì chỉ cho phép chỉ số số nguyên ở đây, bây giờ chúng tôi cho phép bất cứ điều gì. Nếu bạn muốn chìa khóa của bạn là một chuỗi, bạn muốn xác định nó như thế này. Nếu bạn muốn nó được một int, bạn chỉ định nó với các int bạn muốn sử dụng. Các câu hỏi về cho đến nay? Một trong những điều tốt đẹp về ý tưởng này là bạn chỉ có thể có một giá trị được lưu trữ với một phím đặc biệt. Nếu chúng ta quay của chúng tôi thiết bị cho phép tôi xóa một số các công cụ này. Và chúng ta hãy nói rằng tôi khởi tạo một mảng để là 0, 1, 2, được thực hiện. Nếu bây giờ tôi biết rằng, ví dụ, nếu tôi echo $ arr [0] Tôi sẽ nhận được giá trị 0 in ra, và kể từ khi có chỉ có thể là một giá trị được lưu trữ cho một phím đặc biệt nếu tôi lưu trữ một cái gì đó $ arr [0], nói một, sau đó tôi biết khi tôi echo $ arr [0] một lần nữa Tôi sẽ không nhận được 0 in ra như trước. Tôi chỉ để có được một. Vì vậy, đây là cơ bản nói rằng tôi không thể có $ arr [0] lưu trữ 2 giá trị khác nhau. Nó không thể lưu trữ cả 0 và một chuỗi, như thế này nghĩa là thay thế những gì đã được $ arr [0] trước đây. Lý do tôi mang lên này được chạy nó, xem những gì sẽ xảy ra. Xem ở đây mà tôi nhận được 0 in ra và sau đó xuống đây. Không có dòng mới đó vì tôi là lười biếng và không đặt đó. Mát về điều này, chúng ta có thể sử dụng điều này như là một cách để nắm bắt ý tưởng này của một bộ nơi mà chúng tôi không thể có nhiều phím trong một mảng. Chúng ta không thể có các phím giống hệt nhau trong một mảng. Tôi không thể có 0 trọng điểm và giá trị 1 và 0 chìa khóa và một giá trị hoặc phím 0 và giá trị đích thực. Các phím là tất cả chỉ có 1 chìa khóa trong mảng. Mặc dù bạn có thể có cùng một giá trị được lưu trữ nhiều lần trong mảng theo các phím khác nhau nó không thể có chìa khóa giống nhau nhiều lần trong mảng PHP của bạn. Nếu chúng ta nhìn vào vấn đề này tiếp theo, unique.php, nơi mà chúng tôi muốn mở một tập tin PHP có chứa một danh sách các chuỗi, một chuỗi trên mỗi dòng, và chúng tôi muốn để tìm tất cả các chuỗi duy nhất trong tập tin đó tất cả chúng ta phải làm là sử dụng một trong những mảng PHP và sử dụng các chuỗi trong tập tin như là chìa khóa để mảng này và tiếp tục cập nhật mảng của chúng tôi khi chúng tôi lưu trữ các khóa mới. Như chúng ta đọc từng dòng của file chúng ta có thể lưu trữ nó trong mảng, và cuối cùng chúng ta sẽ có như là chìa khóa của chúng tôi trong mảng của chúng tôi tất cả các chuỗi duy nhất trong tập tin. Điều đó làm cho tinh thần? Hãy xem cách làm việc này. Chúng tôi sẽ mở ra, theo spec, một tập tin mới gọi là unique.php. Mở ra. Rất tiếc, xin lỗi, mới tập tin. Chúng ta sẽ bắt đầu nó với các thẻ bắt đầu và kết thúc. Chúng tôi sẽ để lưu nó trong phần 9, và chúng tôi sẽ gọi nó unique.php. Được rồi, bây giờ phóng to. Ý tưởng ở đây là mở một tập tin, đọc trong dòng tập tin bằng dòng. Đối với mỗi dòng trong tập tin chúng tôi sẽ có một mảng mà chúng tôi có  dòng như là chìa khóa của chúng tôi. Và sau đó khi chúng tôi nhận được để kết thúc ở đây $ Arr phím các dòng độc đáo từ tập tin vì chúng tôi biết rằng nếu tôi đặt dòng vào mảng này nhiều lần, nó sẽ chỉ giữ trọng các giá trị cũ, và chúng tôi thực sự có thể đặt dòng mảng như chính nó giống như rằng. Đây là loại kỳ lạ. Chúng tôi đang lưu trữ cùng một cặp giá trị quan trọng hơn và hơn và hơn một lần nữa, nhưng kể từ khi chúng tôi được đảm bảo rằng sẽ có chỉ có 1 phím dòng do đó, nếu chúng ta có một tập tin nói rằng một tập tin của tiếng ồn động vật và nó có woof, woof, meow meow, moo moo, và mỗi lần chúng ta đọc một tiếng ồn động vật ra như woof và chúng tôi lưu trữ nó trong mảng của chúng tôi chúng tôi nhận được woof, và sau đó lần thứ hai chúng tôi lưu trữ woof nó sẽ ghi đè lên lần đầu tiên mà chúng tôi lưu trữ nó. Cuối cùng, chúng tôi sẽ chỉ có một mục nhập trong mảng cho mỗi tiếng ồn động vật trong tập tin tiếng ồn của động vật của chúng tôi. Bạn có cảm thấy tự tin rằng bạn có thể giải quyết việc mở một tập tin trong PHP? Một cách để làm điều đó cho đi qua theo cách này một cách nhanh chóng một để làm điều đó với fopen, như chúng ta đã thấy trước đó. Bạn có thể fopen some_file.txt. Bạn có thể mở nó trong chế độ đọc, giống như trong C. Đó là một cách hoàn toàn tốt để làm điều đó. Bạn cũng có sau đó để đọc trong dòng tập tin của dòng có các chức năng tương tự, nhiều người trong số họ, mà bạn đã làm trong C. Bạn có fgets. Bạn có feof, mặc dù chúng ta không thích bằng cách sử dụng bởi vì, hãy nhớ rằng, đó không phải là rất tốt trong C. Bạn có thể làm điều đó cùng một cách, nhưng đây là một điều thực sự mát mẻ. Xin lỗi, tôi không muốn làm $ file, nhưng có một chức năng được gọi là tập tin trong PHP, và chức năng này ngay tại đây là mát mẻ bởi vì nó đọc toàn bộ nội dung của các tập tin mà bạn chỉ định, vì vậy some_file.txt, đọc toàn bộ nội dung của tập tin này vào một mảng và sau đó cho phép bạn lặp qua nó, mà là khá tiện lợi. Nếu chúng ta đi, ví dụ, để trình duyệt web của chúng tôi và chúng tôi nhìn vào Google cho PHP tập tin bạn có thể thấy ở đây là hướng dẫn của chúng tôi nói rằng tập tin mà đọc toàn bộ tập tin vào một mảng, và chúng ta có thể đào tạo Quản lý để trả lại nội dung của một tập tin như là một chuỗi, nhưng thường chỉ nhận được nó như một mảng thực sự là tốt đẹp bởi vì những gì nó làm là nó phá vỡ nó lên để mỗi phần tử trong mảng là một dòng của tập tin, do đó, nếu chúng ta nhìn vào tập tin 0, đó là dòng đầu tiên của tập tin. File 1, dòng thứ hai, tập 2, dòng thứ ba, và vv và vv. Nó sẽ không được tốt đẹp nếu đó là tất cả những gì bạn phải làm trong C? Khá tiện lợi. David cho thấy điều này trong bài giảng, và các thành ngữ, ông đã cho thấy là ngoài tiêu chuẩn của chúng tôi cho vòng lặp trong PHP chúng tôi đã có for ($ i = 0; i <10; i + +), và bạn có thể làm điều này trong PHP quá, cùng một điều chúng tôi cũng có xây dựng này mát gọi là foreach. Foreach là thực sự tiện dụng khi iterating trên mảng hoặc cấu trúc dữ liệu vì nó cho phép bạn để lôi ra từng phần tử của mảng mà không cần phải tự làm việc lập chỉ mục cho mình, mà không cần phải tự tạo ra một biến chỉ số, tăng nó, kéo ra khỏi các giá trị trong mảng tại điểm đó, bởi vì đó là một điều rất phổ biến để làm. Bạn có thể đã làm điều đó tấn lần khi bạn đang làm C thứ trong học kỳ, như vậy với foreach chúng ta có thể lặp qua mảng này tập tin, và cú pháp mà chúng tôi muốn lặp trên mảng này và xác định rằng biến chúng ta sẽ sử dụng để lưu trữ phần tử của mảng này tại địa phương, địa phương trong phạm vi của vòng lặp foreach, là chúng ta sẽ gọi nó dòng. Nếu đó là một tập tin chỉ của các từ và một từ trong một dòng chúng ta có thể gọi nó từ là tốt, thực sự chỉ là bạn cung cấp cho một tên, bất cứ điều gì bạn muốn gọi nó, và sau đó bên trong vòng lặp, bạn có thể làm bất cứ điều gì bạn muốn với biến dòng này. Nếu đó là không đủ để có được giá trị của mảng và bạn cũng muốn nhận được chỉ số cùng với nó, bạn có thể chỉ định một tên cho các chỉ mục cũng như các giá trị, và bây giờ bạn có quyền truy cập vào 2 biến. Bạn có $ i và dòng trong đó $ i là chỉ số trong mảng, và dòng là dòng mà bạn lấy từ tập tin. Ví dụ, nếu chúng ta muốn in ra tiếng vang 0 dòng của tập tin như thế này, chúng ta có thể làm điều đó chỉ như thế này, "Line $ i của tập tin là $ line" và đây là một cái gì đó chúng tôi cũng đã không nhìn thấy hoặc nơi mà tôi đã hoàn toàn bỏ qua này% s% d kinh doanh rằng chúng tôi đã phải đối phó với C, và thay vào đó tôi đã đi thẳng đến văn bản biến trong dòng trong chuỗi của tôi. Điều này được gọi là suy biến, chuỗi suy nơi bạn đang nhồi các biến ngay trong, và thông dịch viên PHP là đủ thông minh khi nó đọc thông qua một chuỗi bắt đầu với dấu ngoặc kép không báo giá duy nhất, với chuỗi đơn trích dẫn, bạn không thể làm điều này nhưng với chuỗi đôi trích dẫn như là nó đọc qua nó cho các biến. Nó săn bắn chúng xuống, và nếu nó thấy biến, nó sẽ lấy giá trị của biến và các công cụ nó vào chuỗi nếu nó có thể chuyển đổi nó thành một chuỗi đại diện, mà là khá tiện lợi. Để bây giờ, chúng ta hãy nhận xét ra phần còn lại của tất cả mọi thứ, tiết kiệm này, và những gì chúng ta có thể làm bây giờ là chúng ta có thể mở một tập tin mà chúng ta có thể gọi some_file.txt chúng ta hãy tạo ra một file mới và chúng ta có thể đặt trong một loạt các công cụ vô nghĩa ở đây chỉ để kiểm tra tất cả mọi thứ ra, lưu nó, gọi nó là some_file.txt, như tôi đang làm đây ở đầu trang, và bây giờ nếu tôi thu nhỏ chỉ để chắc chắn tất cả mọi thứ trong cùng một thư mục có vẻ như tôi có unique.php và some_file.txt trong cùng thư mục. Nếu tôi chạy php unique.php xem nó như thế nào in ra mỗi dòng trong tập tin của tôi và những gì dòng là? Đó là khá mạnh mẽ, phải không? Hãy nhìn xem, nó mất 3 dòng mã để mở một tập tin. Vâng, 4 dòng mã. Tôi không thể đếm ngày hôm nay, rõ ràng. Nhưng thực sự chỉ cần 2 dòng thú vị của mã, bởi vì 2 khác là các dấu ngoặc nhọn, nhưng trong nhiều mã này, chúng tôi đã có thể mở một tập tin, iterate qua nó, kéo ra số dòng và dòng và in ra. Mát công cụ. Charlotte. Charlotte] Tôi có một câu hỏi về cú pháp. Vì vậy, foreach các chương trình khuyến mại với tất cả các dòng duy nhất của các tập tin mà bạn mở, và sau đó khi bạn muốn làm việc với tất cả các dòng duy nhất bạn chỉ cần làm điều đó như và sau đó kết hợp các giá trị. [Nate H.] bạn có thể làm ngay tại đây, câu hỏi được foreach có để làm với mảng, do đó, cú pháp foreach thực sự là foreach, và thông báo rằng không có không gian hoặc bất cứ điều gì giữa và mỗi. Họ có để đi ngay bên cạnh nhau, và sau đó nó có trong một mảng, và sau đó bạn có từ khoá này gọi là có được ở đó, và sau đó sau khi bạn có thể đặt một tên biến, trong trường hợp bạn đang đi để được kéo ra các giá trị của mảng, không phải các chỉ số, hoặc nếu bạn làm điều đó như chúng tôi đã ghi ở phía dưới bạn có được các phím và các giá trị. Bạn có yếu tố foreach của mảng hoặc cặp của mảng như chìa khóa giá trị gia hoặc là chỉ là giá trị. Tùy thuộc vào những gì bạn cần, nếu bạn không cần các phím, sau đó bạn có thể đi với giá trị. Nếu bạn muốn các phím, bạn có thể đi với họ quá. Charlotte] Tôi cũng nhận ra rằng chúng ta không bao giờ tuyên bố i hoặc dòng. Làm thế nào để biết những gì họ đang có? [Nate H.] Những gì bạn có nghĩa là bằng cách tuyên bố? [Charlotte Chúng tôi không bao giờ nói với họ những gì tôi hoặc dòng phương tiện. [Nate H.] Chúng tôi không bao giờ nói với máy tính những gì tôi hoặc dòng có nghĩa là trong điều khoản của Charlotte] Đó là họ đang lập chỉ mục hoặc rằng they're [Nate H.] Chúng tôi không bao giờ nói với nó rằng điều này được coi là chỉ số hoặc phím và giá trị, và đó là bởi vì đó là thông dịch viên PHP. Này phục vụ như khai báo và nói không sao, quan trọng là có được một biến gọi là i được lưu trữ trong một biến tên gọi là i. Giá trị sẽ được lưu trữ trong một biến gọi là dòng, do đó, điều này phục vụ như là tờ khai của các biến này và nói $ i là một chìa khóa, và $ line là một giá trị. Yeah, Ella. [Ella] Nếu các phím không được thực hiện số lượng làm thế nào để quyết định thứ tự nó sẽ in tất cả mọi thứ? Là nó chỉ thích những thứ tự khi nhập vào? [Nate H.] Hãy cho nó một thử. Hãy tạo ra một biến gọi là arr, và chúng ta có thể làm một đến 7. Hãy nói rằng 0 đi vào mảng khác với 1, 2, hoặc táo. Hãy nói rằng 7 đi đến 1, b đi đến 2, và 3 đến 4. Đây là loại của một ví dụ tìm kiếm điên bởi vì chúng tôi đang trộn chuỗi và số nguyên tất cả các nơi. Có không có thứ tự thực sự cho mảng này. Ý tôi là, chúng tôi có thể đặt tất cả mọi thứ trong thứ tự chữ cái bởi các phím. Chúng tôi có thể đặt tất cả mọi thứ theo thứ tự bảng chữ cái theo giá trị. Chúng tôi có thể thử và đưa vào tài khoản mà một số là chuỗi, một số là số nguyên, và chúng tôi có thể thử và chuyển đổi tất cả chúng cùng loại và xem những gì sẽ xảy ra, hoặc chúng ta có thể xem xét về giá trị, trong đó chúng tôi đã nhập chúng nơi mà chúng tôi đặt anh chàng này trong lần đầu tiên, anh chàng này trong lần thứ hai, anh chàng này thứ ba, anh chàng này trong cetera thứ tư et,. Hãy xem những gì sẽ xảy ra khi chúng ta chạy mã này. Nếu chúng ta di chuyển xuống và làm cùng một loại điều, và ở đây nó không in ra các dòng mới. Khi đọc những điều trên của tập tin, nó đã được bao gồm cả những dòng mới trong các giá trị, được lý do tại sao nó in ra độc đáo, trong khi ở đây không, vì vậy đó là lý do tại sao tất cả mọi thứ được smushed với nhau. Hãy thêm vào dòng mới chỉ để làm cho những điều tốt đẹp. Hãy chạy lại nó, và vì vậy ở đây nhìn vào những gì đã xảy ra. Nó được in ra tất cả mọi thứ theo thứ tự mà chúng tôi đưa nó vào mảng. Nó giữ gìn trật tự trong ý nghĩa đó. Trở lại với vấn đề này của uniques nơi mà chúng tôi muốn để có thể để lặp lại trên một tập tin, và chúng tôi sẽ cung cấp cho nó some_file.txt, và chúng tôi sẽ để lặp lại nó như thế này. Chúng tôi đã nói rằng chúng ta muốn sử dụng một mảng để đảm bảo rằng chúng tôi có tất cả các dòng chỉ có ra khỏi đó, và chúng tôi có thể làm điều đó thực sự dễ dàng bằng cách chỉ lưu trữ trong một mảng mà chúng tôi tất nhiên tuyên bố bên ngoài phạm vi của một vòng lặp, và chúng tôi đã nói rằng nếu chúng ta sử dụng các dòng trong tập tin như là các phím trong mảng của chúng tôi nếu chúng ta bước vào một dòng trùng lặp, chúng tôi muốn được trọng các giá trị trước đó. Nó không bao giờ có thể có 2 phím là giống hệt nhau trong cùng một mảng. Chúng ta có thể làm điều đó. Chúng tôi sẽ nhận được loại bỏ echo tuyên bố này ngay tại đây. Ở đây chúng tôi đang lưu trữ các dòng trong tập tin trong mảng của chúng tôi sử dụng chính nó như là chìa khóa. Không có gì để nó, và nó quay ra rằng chúng tôi thậm chí không cần chìa khóa này. Chúng ta không cần mà tôi biến. Tại thời điểm này nếu chúng ta làm một vòng lặp foreach và chúng tôi đã để lặp trên mỗi arr và dòng bây giờ nếu chúng tôi echo-oops, xin lỗi. Chúng tôi không thể sử dụng dấu phẩy. Chúng tôi phải sử dụng điều này như là từ khóa. Bây giờ nếu chúng ta lặp dòng chúng tôi sẽ nhận được tất cả các từ duy nhất trong tập tin. Nếu chúng ta đi lên để some_file.txt, và chúng ta hãy nói rằng chúng tôi làm táo, chuối, táo, táo, chuối, nếu chúng ta in ra tất cả các từ duy nhất trong tập tin này, chúng ta chỉ nên nhận được táo và chuối để in ra. Nếu chúng ta tiết kiệm này, bây giờ ở đây chúng tôi sẽ phóng trở lại, php unique.php, và ta-da. Chúng tôi đã thành công uniqued các tập tin. Phần cuối cùng của vấn đề này là yêu cầu bạn để sắp xếp mảng này trước khi bạn in nó ra bởi vì trong ví dụ này đơn giản mà chúng tôi đã chỉ cần thực hiện chúng tôi đã may mắn theo ý nghĩa là tập tin chúng tôi đã làm điều này ví dụ contrived với táo và chuối. Nó đã được sắp xếp. Tuy nhiên, bằng cách sử dụng chức năng sắp xếp đơn giản, bạn có thể sắp xếp một mảng, mà là khá tiện lợi. Điều cuối cùng tôi muốn nói chuyện với các bạn về thực sự nhanh chóng là loại này của PHP là tất cả tốt và tốt, và đó là siêu tiện dụng biết làm thế nào để làm nếu bạn cần làm ít, mọi thứ nhanh chóng lập trình. Ví dụ, nếu tôi cần phải viết một chương trình đó, nói, đặt tất cả mọi người thành các phần tôi sẽ không để đi và viết nó trong C. Nó sẽ để được lâu dài. Nó sẽ là loại đau đớn, đặc biệt là nếu có tập tin liên quan đến, cũng giống như các bạn đã thấy. Thật là tốt đẹp chỉ với mã số này nhiều ngay tại đây chúng tôi có thể trích xuất thông qua một tập tin, kéo ra khỏi tất cả các giá trị duy nhất và in chúng trở ra. Tuy nhiên, đối với bài tập của bạn, cho các dự án của bạn, nếu bạn đang xây dựng trang web với PHP sức mạnh là chúng tôi đang chạy các file PHP của chúng tôi thông qua thông dịch viên này, và các thông dịch viên được xử lý tất cả mọi thứ trong các thẻ PHP, để lại tất cả mọi thứ khác và ảnh hưởng phun ra kết quả. Chúng tôi có thể làm điều này để xây dựng HTML lập trình. Bây giờ, nếu chúng ta trở lại spec, vấn đề cuối cùng trong spec nói về ý tưởng này của nồng độ và tạo ra một trình đơn thả xuống, mà bạn có thể hoặc không muốn làm, tùy thuộc vào những gì dự án cuối cùng của bạn là làm, cho phép người dùng lựa chọn từ một danh sách của tất cả các nồng độ có thể một tập trung. Bây giờ, đây là loại đau đớn để loại này ra và phải làm tất cả những điều này bằng tay, đặc biệt là khi bạn đang có để đảm bảo rằng bạn có tất cả các dấu ngoặc nhọn ở đúng nơi và tất cả các dấu ngoặc kép ở đúng nơi, với PHP bạn có thể làm điều này lập trình, và bạn có thể làm điều này thực sự nhanh chóng. Chúng ta hãy xem làm thế nào để làm điều này. Chúng tôi sẽ mở ra một tập tin mới. Chúng ta sẽ đặt trong thẻ PHP của chúng tôi. Chúng tôi sẽ để gọi nó concentrations.php, và bây giờ khi bạn đang làm điều này, loại một điều tốt để suy nghĩ về khi bạn đang cố gắng để trộn và kết hợp PHP và HTML của bạn là tìm hiểu, được rồi, phần mà tôi muốn lập trình tạo ra là gì? Phần mà tôi có thể lập trình tạo ra là gì? Đó là sự thật mà bạn có thể làm tất cả các HTML của bạn bên trong các khối PHP. Bạn có thể echo tất cả của HTML như dây đàn. Ví dụ, nếu tôi muốn bắt đầu làm các thẻ lựa chọn bên trong của PHP Tôi có thể nói tiếng vang, nói chọn name = nồng độ, và sau đó xuống dưới đây, tôi có thể có một thẻ echo hoặc một tiếng vang khác được gọi là đóng chọn. Đây là một cách để làm điều đó bởi vì những gì điều này là nghĩa đen sẽ làm là in ra chuỗi này khi nó chạy thông qua các thông dịch viên PHP, do đó, kết quả sẽ được HTML. Nếu tôi lưu tập tin này vì nó là ngay bây giờ và tôi chạy concentrations.php php nhìn vào những gì tôi có. Tôi có thẻ này mở gần chọn. Nếu tôi được làm điều này và tôi được là để lưu kết quả vào một tập tin, nói,-wait concentrations.html, nó trông giống như l đã đi qua phía bên kia bây giờ nếu tôi mở ra concentrations.html bạn thấy tôi có một tập tin HTML hợp lệ. Là loại lạ? Chúng tôi đang sử dụng PHP để tạo ra HTML, tạo ra HTML hợp lệ. Cách chúng ta đang làm là chúng tôi chỉ có in PHP HTML mà chúng ta muốn nó in. Điều này có nghĩa là các trang web PHP đang làm việc. Khi bạn truy cập một trang web mà gửi cho bạn một cái gì đó như một cái gì đó, một cái gì đó, một cái gì đó dot com slash index.php máy tính là nghĩa đen gọi index.php, chạy nó thông qua các thông dịch viên PHP, và bất cứ điều gì rác ra nó gửi lại cho trình duyệt và nói hey, trình duyệt, giải thích điều này như là HTML. Những điều tốt đẹp là nó có thể là một nỗi đau không ngừng viết tiếng vang, echo, echo, echo và kèm theo tất cả mọi thứ trong dấu ngoặc kép như thế này, vì vậy nếu bạn muốn viết HTML đó đang xảy ra để được tĩnh mình bạn có thể làm nó như thế này, đặt nó bên ngoài, đóng nó, và sau đó ở đây bạn chỉ đặt bên trong các thẻ PHP đó mà bạn biết bạn muốn lập trình tạo ra, và trong trường hợp này đó là các thẻ tùy chọn là một nỗi đau để tạo ra. Ví dụ, chúng ta có thể tạo ra các thẻ tùy chọn một ngàn bằng cách làm một cái gì đó như thế này, $ i <1000, i + + và nói rằng giá trị tùy chọn tiếng vang = $-tả, tôi không thể làm điều đó. Vâng, chúng ta cung cấp cho nó một thử và xem những gì sẽ xảy ra. $ I và sau đó nói $ i