DOUG LLOYD: ดังนั้นเราได้ ทำมากของการทำงานใน C, และ C เป็นเย็นจริงๆ ภาษาเพราะมันจะช่วยให้คุณ ความสามารถในการดำน้ำจริงๆ ในระดับต่ำลงในโปรแกรมของคุณ เราได้รับที่จะทำสิ่งที่เป็น จริงๆนาทีจัดการ แต่ละไบต์ของหน่วยความจำ จำได้ว่าตัวชี้จริงๆ ช่วยให้เรามีความยืดหยุ่นที่ แต่เรามักจะต้องมี ว่าระดับเม็ดละเอียดของรายละเอียด ในโปรแกรมของเราหรือไม่ อาจจะไม่ได้ใช่มั้ย? และถ้าเรากำลังจะมี การออกระหว่างการเป็น สามารถที่จะทำจริงๆ สิ่งนาทีจริงๆ สิ่งที่ยิ่งใหญ่ที่เราไม่ต้องคิด เกี่ยวกับเราไม่ได้มีการดำเนินการ ความคิดเหล่านี้ใหญ่จริงๆถ้า พวกเขากำลังสร้างขึ้นแล้วในสำหรับเรา โดยทั่วไปสำหรับการสร้างขนาดใหญ่ โปรแกรมหรือโครงการขนาดใหญ่ เราอาจจะผิดพลาดในด้านข้าง ของการมีภาษาอื่น ๆ สิ่งที่สร้างขึ้นใน สำหรับเราแทนที่จะต้อง สิ่งที่ระดับต่ำ และที่ที่ PHP จริงๆมาใน ตอนนี้หนึ่งในเหตุผลที่ ที่เราสอน PHP ใน CS50 ก็คือว่ามันเป็นแรงบันดาลใจอย่างมาก ซีและในความเป็นจริงในความคิดของฉัน มีจริงๆสอง ภาษาที่รากเหง้า เป็นเรื่องธรรมดามากในปัจจุบัน ซีและเสียงกระเพื่อม และพวกเขากำลังภาษารากเหง้า เพราะการเขียนโปรแกรมที่ทันสมัย​​อื่น ๆ ทุกคน ภาษาที่ได้มีการพัฒนา ตั้งแต่นั้นมาเป็นแรงบันดาลใจ โดยหนึ่งหรือ syntactically อื่น ๆ PHP เป็น syntactically คล้ายกันมาก ไปที่ C ในขณะที่ภาษาเช่นโครงการ ยกตัวอย่างเช่นที่ คุณอาจเคยได้ยิน เป็นแรงบันดาลใจอย่างมากจากภาษา เรียกว่าชัดซึ่งเป็นภาษาที่มีอายุมากกว่า ดังนั้นเหตุผลที่เราสอน PHP ใน CS50 คือว่า โดยรู้ C เป็นพื้นฐาน ที่คุณทำที่จุดนี้ ยกขึ้น PHP ซึ่งจะช่วยให้คุณ ความสามารถในการทำสิ่งที่ระดับที่สูงมาก กว่า C ไม่เป็นไม่ได้ ที่มากของอุปสรรค์, เพราะคุณมีอยู่แล้ว แนวคิดพื้นฐานของไวยากรณ์ C ได้รับรอบเกือบ 45 ปีที่จุดนี้ PHP ได้รับรอบประมาณ 20 ปี และใน 25 ปี ในระหว่างการเขียนโปรแกรม ระบุว่าพวกเขาจะมาก ค่อนข้างมีความสามารถในระดับที่สูงขึ้น และความผิดพลาดและการต่อสู้ ของ 20 ปีในระหว่าง นำไปสู่​​การ PHP และภาษาที่ทันสมัย​​อื่น ๆ ของ PHP ทางเลือกที่ดีของ ภาษาสำหรับซอฟแวร์ ที่ allow-- สำหรับ ซอฟแวร์ที่คุณ that-- ต้องทำในสิ่งที่ C มีความซับซ้อนจริง ดังนั้นตัวอย่างเช่นการทำงาน กับสตริงใน C มีความซับซ้อนมากเพราะ ที่เรารู้ว่าสตริงใน C มีจริงๆเพียงแค่อาร์เรย์ของตัวละคร มันไม่ได้เป็นในตัวชนิดข้อมูล หรือบางทีอาจจะมากขึ้นพื้นฐาน สิ่งที่เราไม่ได้ครอบคลุมใน C, สิ่งที่ถ้าคุณต้องทำ บางเครือข่ายคอมพิวเตอร์? ทั้งหมดใช่มั้ย? ซีมีความสามารถในการทำ แต่ก็เพื่อให้ ความลับและอื่น ๆ ยากที่จะทำจริง มันจะไม่ดีถ้า ภาษามีในตัววิธีที่ง่าย ที่จะใช้เครือข่าย? และ PHP เป็นภาษาที่ทำให้นั้น หรืออำนวยความสะดวกที่ค่อนข้างน้อยมาก ที่ผมกล่าวว่า PHP เป็นแรงบันดาลใจอย่างหนักมาก โดยซีไวยากรณ์จะคล้ายกันมาก และดังนั้นจึงหวังว่าจะทำให้ การเปลี่ยนแปลงจากที่อื่น ๆ นิด ๆ หน่อย ๆ นุ่มกว่าบาง ภาษาอื่น ๆ ที่อาจจะมี ที่จะเริ่มต้นการเขียน PHP, เพียงแค่เปิดขึ้น ไฟล์ที่มีนามสกุลไฟล์ .php เทคนิคนี้ไม่ได้ จำเป็นต้องใช้จริง แต่ถ้าคุณต้องการสิ่งที่ต้องการไวยากรณ์ ไฮไลต์ใน IDE ดังนั้นประเภทที่ ชื่อหรือชื่อตัวแปรฟังก์ชั่น คุณรู้ว่าคำหลักของภาษา เป็นไฮไลต์ใน สีที่เฉพาะเจาะจงคุณโดยทั่วไป ต้องการตั้งชื่อไฟล์ของคุณด้วย นามสกุลไฟล์โดยเฉพาะอย่างยิ่ง ดังนั้นเราจึงได้ตั้งชื่อไฟล์ของเรากับ .php ขยาย แต่แล้วยังมี PHP, ทั้งหมดโค้ด PHP ที่เราเขียนในการที่ ไฟล์ที่จะต้องมีการปิดล้อมใน PHP เหล่านี้ คั่นที่เราเห็น ที่นี่บนหน้าจอ วงเล็บมุม php? ที่จะเริ่มต้น จากนั้นเราเขียนทั้งหมดของ PHP ของเรา รหัสที่เราต้องการในระหว่าง และแล้ว? วงเล็บมุมที่จะปิด ถ้าเราไม่ทำเช่นนี้แล้ว สิ่งที่จะเกิดขึ้น? มันจะไม่ผิดพลาด มันไม่ได้ไป จริงๆทำลายโปรแกรมของเรา แต่ก็ไม่ได้ไปมี ผลที่เราต้องการ สิ่งที่จะเกิดขึ้นจริงๆคือ ว่าเมื่อเราพยายามเรียกใช้โปรแกรมนี้ ทุกอย่างไม่ได้อยู่ระหว่างผู้ที่คั่น จะถูกพิมพ์ออกมาคำต่อคำ มันไม่ได้ไป จริงรันโค้ดที่ มันเป็นไปได้เพียงแค่ พิมพ์ออกมาคำต่อคำ ตอนนี้ทำไมเป็นกรณี? ดังนั้นซีเป็นสิ่งที่เรียกว่า เป็นภาษาที่รวบรวม คุณอาจคุ้นเคยกับ ขั้นตอนในการทำโปรแกรมของคุณ เปลี่ยนไฟล์ .c และไฟล์ .h เป็นปฏิบัติการเดียวกับการแต่งหน้า, โดยเฉพาะอย่างยิ่งการใช้ เสียงดังกราวเป็นคอมไพเลอร์ของเรา PHP, แต่ไม่ได้ มีเทียบเท่านี้ PHP เป็นสิ่งที่เรียกว่า แปลภาษา และสิ่งที่หมายความว่า? ดีก็หมายความว่าเราไม่ได้มีการแปลง รหัสแหล่งที่มาของเราที่จะศูนย์และคน ล่วงหน้า แต่มีโปรแกรม ซึ่งจะเรียกว่า PHP, ที่เข้าใจ PHP และ การเรียงลำดับของสามารถทำให้มันได้ทันที นั่นคือไม่ได้จริงๆที่ถูกต้องว่า แต่มันเป็นความคล้ายคลึงที่ดีงาม สิ่งที่เกิดขึ้น มันแปลความหมายเหล่านั้น เลขศูนย์และคนที่เกี่ยวกับการบิน และดังนั้นถ้ามันไม่ทราบ วิธีการที่จะดำเนินการบางสิ่งบางอย่าง หากไม่ทราบวิธีการ กระบวนการ PHP, คุณอาจ ต้องการที่จะนำข้อความที่อยู่ในนั้นใช่มั้ย? คุณอาจต้องการที่จะนำรหัสใน มีแม้จะไม่ได้อยู่ระหว่าง PHP-- ตัวคั่น PHP But-- จึงไม่ได้ไป จะลบมันสำหรับคุณ มันเป็นเพียงแค่ไปที่พื้นทิ้งมัน ดังนั้นมันจะพิมพ์ ออกไปยังหน้าจอ นี้ดูเหมือนว่ามันเป็นเรื่องที่ไม่ดี สิ่ง แต่ที่จริงมันเป็น จะเป็นจริงๆ สิ่งที่ดีที่สุดเท่าที่เราจะ เห็นเมื่อเราพูดคุยเกี่ยวกับ PHP การพัฒนาเว็บ เพราะมันหมายถึงเราสามารถทำได้ กระจาย PHP และ HTML เราสามารถใช้ร่วมกันเพื่อให้พวกเขา สร้างหน้าเว็บแบบไดนามิกมากขึ้น แต่เพิ่มเติมว่าใน วิดีโอในการพัฒนาเว็บ PHP ดังนั้นสิ่งที่เป็นไวยากรณ์ของ PHP? นั่นคือสิ่งที่วิดีโอนี้เป็นข้อมูลเกี่ยวกับ พูดคุยเกี่ยวกับมัน ดังนั้นการเริ่มต้นตัวแปร ตัวแปร PHP อยู่ มีเพียงสองขนาดใหญ่ แตกต่างจากซี ที่แรกก็คือว่ามี ไม่ระบุประเภท เราไม่ได้มีการพูด int, ถ่านลอยทุกสิ่งที่ เราไม่จำเป็นต้องทำอย่างนั้นอีกต่อไป PHP เป็นภาษาที่ทันสมัย มันสามารถคิดออกว่าคุณ พยายามที่จะทำหรือทำสิ่งที่ดีที่สุด คิดว่าเป็นสิ่งที่คุณกำลังพยายามที่จะทำ เพื่อให้เป็นที่ดีงาม สิ่งอื่น ๆ ที่ตัวแปรทั้งหมด ชื่อต้องเริ่มต้นด้วยเครื่องหมายดอลลาร์ นั่นเป็นเพียงแค่สิ่งที่จะได้รับใช้ มันเป็นเพียงเล็กน้อยแปลกเพราะ ก็เพื่อให้ PHP สามารถเข้าใจ สิ่งที่เป็นตัวแปรและสิ่งที่ไม่ ดังนั้นทุกชื่อตัวแปร เริ่มต้นด้วยเครื่องหมายดอลลาร์ ดังนั้นใน C เราอาจจะพูดอะไรบางอย่าง เช่นนี้ int x = 54 เราไม่จำเป็นต้องทำอย่างนั้นอีกต่อไปใน PHP เราก็สามารถพูดได้ $ x = 54 และเราอาจจะบอกว่ายกตัวอย่างเช่นใน C, ถ้าเราได้ปอนด์รวมถึง CS50 .h ไฟล์ส่วนหัวเราอาจจะบอกว่า วลีสตริง = "นี่คือ CS50." เราไม่จำเป็นต้องทำอย่างนั้นใน PHP แม้ว่า เราก็สามารถพูดได้ $ วลี = "นี่คือ CS50." และในความเป็นจริงสตริงอยู่ในขณะนี้ ในตัวชนิดข้อมูลใน PHP หรือมากกว่า PHP เข้าใจ สิ่งที่เป็นสตริง มันแยกออกจากอาร์เรย์ ของตัวละครเหมือนเป็นใน C. ทั้งหมดที่คุณชื่นชอบ งบเงื่อนไขจาก C ยังคงมีอยู่เพื่อให้คุณใช้ จึงไม่มีการเปลี่ยนแปลงขนาดใหญ่มี เราสามารถ say-- เราสามารถมี ถ้างบเช่นนี้ ถ้า y ที่ $ 43 หรือ $ Z = 15 ดังนั้นที่ตรงไปตรงสวย เราสามารถมีถ้าและอื่น ๆ เราสามารถมีถ้าและอื่นถ้า และแจ้งให้ทราบบางสิ่งบางอย่าง สวยดีนี่และนี้ เป็นประเภทของหนึ่งในบรรดา ข้อดีของ PHP เมื่อเทียบกับซีแจ้งให้ทราบล่วงหน้า สิ่งที่ฟังก์ชั่นที่เราไม่ได้ใช้ที่นี่? เรากำลังใช้ == เพื่อเปรียบเทียบ ตัวแปรชื่อ $ เพื่อสตริง เราไม่สามารถดำเนินการได้ใน C ใช่มั้ย? เรามีการใช้ฟังก์ชั่นที่เรียกว่า StrComp หรือ StrEndComp หรือ ญาติที่เกี่ยวข้อง และอื่น ๆ แล้วเราเห็นข้อดีเหล่านี้ เราไม่ต้องทำอะไร โง่หรือบางทีอาจจะ unintuitive ขณะที่เรียกใช้ฟังก์ชันที่เรียกว่า StrComp ถ้าฉันเพียงแค่ต้องการที่จะทดสอบ ไม่ว่าจะเป็นค่าเท่ากับสตริง ฉันเพียงแค่สามารถใช้เท่ากับเท่าเทียม เหมือนฉันสามารถทำอะไรอย่างอื่น เพื่อให้มีการพิจารณาเป็นพิเศษ บางครั้งโดยวิธีการที่คุณอาจ เห็นอื่นถ้าเป็นคำเดียว, elseif และที่ตกลงใน PHP ได้เป็นอย่างดี ดังนั้นบางครั้งคุณอาจเห็นว่า มันไม่ได้พิมพ์ผิด PHP จริงเข้าใจ elseif ผมไม่ทราบว่าทำไมพวกเขา ตัดสินใจที่จะใช้นั้น แต่ที่เราได้เห็นหลายต่อหลายครั้ง ตลอดวิดีโอของเราเพื่อให้ห่างไกล โปรแกรมเมอร์ที่เรารักมันถ้า เราสามารถทำสิ่งได้อย่างรวดเร็ว ดังนั้นการกำจัดของพื้นที่ที่ เห็นได้ชัดว่าเป็นประโยชน์ใหญ่ เพื่อที่ว่าถ้า elseif เรายังมีผู้ประกอบการที่ประกอบไปด้วย, จำคำถามลำไส้ใหญ่เครื่องหมาย สำหรับรูปแบบสั้นจริงๆถ้าอื่น หรือมีเงื่อนไขแตกแขนง และเห็นได้ชัดในเรื่องนี้ สิ่งที่เรากำลังพยายามที่จะทำที่นี่ มีการกำหนดตัวแปร $ จดหมายจริงหรือเท็จ ขึ้นอยู่กับว่า $ var เป็นตัวอักษร ดังนั้นนี่คือสวยคล้ายกับ isalpha ที่เราคุ้นเคยกับการจากซี นี่คือการจัดเรียงของเทียบเท่าของ PHP ฟังก์ชั่นที่เห็นได้ชัดคือ เรียกว่า ctype_alpha, แต่นั่นคือวิธีที่เราทำมันใน PHP ดังนั้นทั้งหมดนี้เป็นไปได้คือถ้า $ var เป็นตัวอักษรตัวอักษร $ เป็นความจริง ถ้า $ var ไม่ได้เป็นตัวอักษร $ จดหมายเป็นเท็จ เรายังมีสวิทช์ยังคงงบ เราจำได้ผู้ที่มาจาก C เช่นกัน ที่ด้านบนมีมากว่าเป็นวิธีที่เราทำ สิ่งที่ต้องการได้รับหรือได้รับ int สตริง ดังนั้น PHP ได้ว่าสร้างขึ้นใน เราไม่จำเป็นต้องห้องสมุด CS50 อีกต่อไป เราก็สามารถใช้ฟังก์ชั่นที่ ReadLine สิ่งที่จะทำคือการพิมพ์ ออกข้อความ "รัฐของคุณ โปรด "และจากนั้นกระพริบพร้อมรับคำ รอคอยสำหรับผู้ใช้ที่จะใส่ ข้อมูลบางอย่าง. ตอนนี้สังเกตเห็นสิ่งอื่น เราสามารถทำอะไรกับสวิทช์ หากคุณเคยใช้มาก่อน คุณอาจจำได้ว่าสวิทช์ จะถูก จำกัด สวยมากจำนวนเต็มและ ตัวอักษร แต่ตอนนี้เราสามารถใช้สตริง และในความเป็นจริงคำสั่งสวิทช์ ใน PHP ไม่น้อยที่มีความยืดหยุ่นมากขึ้น กว่าญาติจากซี ลูป เช่นเดียวกับเงื่อนไขทั้งหมด รายการโปรดเก่าของคุณยังคงมี ในขณะที่เรามีลูปที่นับ 1-100 ในกรณีนี้ เราได้ทำในขณะที่ลูป ที่นับ 1-100, และเรามีสำหรับลูป นับว่า 1-100 ดังนั้นไม่ก้าวกระโดดครั้งใหญ่ที่นั่น ไวยากรณ์สวย มากเหมือนกัน ยกเว้นตอนนี้เรากำลังใช้ ดอลล่าตัวแปรสัญญาณแทน การประกาศตัวแปรจำนวนเต็มหรือ สิ่งที่ต้องการสำหรับเคาน์เตอร์ของเรา นี่คือสิ่งที่ได้รับ มากขึ้นกว่า C แม้ว่า อาร์เรย์ ดังนั้นจำตอนที่เราอยู่ พูดคุยเกี่ยวกับ C ในการสั่งซื้อ สำหรับเราที่จะเติบโตและหดตัว ชุดของข้อมูล เราจำเป็นต้องเรียงลำดับของการเริ่มต้น กับความคิดของรายการที่เชื่อมโยงนี้ เพราะอาร์เรย์ C ได้รับการแก้ไขในขนาด เราไม่สามารถหดตัวพวกเขา เราไม่สามารถเติบโตพวกเขา เราต้องจัดสรรหน่วยความจำ และทำบ้าทั้งหมดนี้ หรือใช้รายการที่เชื่อมโยงซึ่ง ใช้เวลาไม่น้อยพื้นที่มากขึ้น แต่ใน PHP อาร์เรย์มี ไม่ได้รับการแก้ไขในขนาดอีกต่อไป พวกเขาสามารถเติบโตและพวกเขาสามารถหด ดังนั้นอีกครั้งเหล่านี้ 20 ปีที่มีอยู่ ระหว่างรุ่นแรกของซี และการเปิดตัวครั้งแรก PHP, เราตัดสินใจว่าคุณรู้ว่า มันจะดีจริงๆ ถ้าเราสามารถทำเช่นนี้ และเพื่อให้เราดำเนินการนี​​้ ดังนั้นอาร์เรย์ PHP จะไม่ได้รับการแก้ไขใน ขนาดและเพราะ PHP ไม่ได้จริงๆ มีโปรแกรมเมอร์ด้านหน้า ความคิดของประเภท เราสามารถผสมชนิดข้อมูล ในอาร์เรย์ของเรามากเกินไป ดังนั้นเราจึงไม่ได้มีการใช้งานทั้งหมด จำนวนเต็มหรือทุกจุดลอย เราสามารถมีส่วนผสมของทั้งหมด ชนิดที่แตกต่างกันในแถวเดียว ประกาศอาร์เรย์คือ ตรงไปตรงสวย ก็เช่นเดียวกับตัวแปรอื่น ๆ $ nums = array (1, 2, 3, 4) อาร์เรย์เป็นฟังก์ชั่น ที่สร้างขึ้นใน PHP ที่ จะสร้างอาร์เรย์สำหรับคุณ นี้จะสร้างอาร์เรย์ของสี่ค่าที่ ตัวเลขในกรณีนี้เรียกว่า $ nums และมีมากกว่าหนึ่งวิธีที่จะทำมัน และเรากำลังจะไป เห็นนี้เป็นจำนวนมากใน PHP PHP ได้รับการพัฒนาที่แตกต่างกันโดยมาก ผู้คนและเติบโตและเติบโตและเติบโต มักจะมีไม่ได้เป็นเพียงสองหรือ สามวิธีที่จะทำบางสิ่งบางอย่างใน PHP มักจะมีเช่น 10 หรือ 20 นี่เป็นเพียงอีกหนึ่งที่พบบ่อย วิธีการที่จะประกาศอาร์เรย์ $ nums = วงเล็บตารางที่ 1, 2, 3, 4 ดังนั้นนี่คือการจัดเรียงของที่คล้ายกับมุมของ C br-- สัญกรณ์วงเล็บปีกกาค่อนข้าง $ - หรือมันจะเป็น int nums ตาราง วงเล็บวงเล็บปีกกาเท่ากับ 1, 2, 3, 4 ใน PHP มัน $ nums = ตาราง วงเล็บ 1, 2, 3, 4 แต่ทั้งสองตัวอย่างเหล่านี้ที่นี่ให้ฉัน อาร์เรย์ของจำนวนเต็มสี่ในกรณีนี้ เกิดอะไรขึ้นถ้าผมต้องการที่จะตรึงบางสิ่งบางอย่างในตอนนี้หรือไม่ ดีฉันก็สามารถพูด $ nums 4 ซึ่ง อีกครั้งเราก็ยังคงนับจาก 0 ที่นี่ ใน PHP จะเป็นที่ห้า องค์ประกอบของอาร์เรย์ ฉันสามารถพูดได้ว่า ฉันจะไม่ต้องทนทุกข์ทรมาน seg ความผิดเพราะอาเรย์ของฉันเป็นเพียง จะเติบโตเพื่อรองรับว่า นั่นคือสวยดีใช่มั้ย? และในความเป็นจริงผมไม่จำเป็นที่จะต้อง ระบุที่ฉันต้องการที่จะนำมัน ฉันสามารถพูดแบบนี้และเพียงแค่ ตะปูมันขวาไปท้ายที่สุด หรือที่ฉันสามารถทำได้แม้เพียงแค่ พูด $ nums 20 หรือ 1000 มันไม่สำคัญว่าจริงๆ มันยังคงเป็นเพียงการไป ตะปูมันขวาบนไปที่สิ้นสุด ดังนั้นผมจึงสามารถเติบโตและ as-- เรา จะไม่ครอบคลุมในที่นี่ แต่ฉันสามารถประกบกันหรือแถบ องค์ประกอบจากอาร์เรย์เช่นกัน และอาร์เรย์จะหดตัวเพื่อรองรับ ว่าพื้นที่ตอนนี้หายไปหรือเปล่า ไม่มีทางที่จะตรึงผู้อื่น บางสิ่งบางอย่างลงบนอาร์เรย์ ซึ่งเป็นฟังก์ชั่นที่เรียกว่า array_push ดังนั้นอีกครั้งเพียงแค่ความคิดนี้ของการเป็น สามารถที่จะทำสิ่งที่แตกต่างกันหลายวิธี ดังนั้นเราจึงได้เห็นสามวิธีที่แตกต่างกันในขณะนี้ ที่จะตรึงองค์ประกอบอื่นบนอาร์เรย์ ดังนั้นนี้จะเพิ่มองค์ประกอบอื่น ที่ส่วนท้ายของอาร์เรย์ $ nums และเราสามารถผสมขึ้นชนิดข้อมูลของเรา ดังนั้นผมจึงอาจมีอาร์เรย์ของไม่ได้ 1, 2, 3, 4, 1 แต่จริง, 3, 4, ที่จริงเป็นแบบบูลแล้ว ถ้าผมต้องการที่จะตรึงบนองค์ประกอบอื่น ไปยังอาร์เรย์ที่อาจสตริง สตริง "ห้า" ฉันจะทำอย่างนั้น และตอนนี้ฉันจะอาร์เรย์ เป็น 1, ความจริง, 3, 4, ห้า ห้าคำที่ไม่เป็นจำนวนเต็ม 5 ดังนั้นความยืดหยุ่นมากมี ได้รับความยืดหยุ่น ที่ดียิ่งขึ้นแม้ว่า เพราะ PHP มีการสนับสนุนสำหรับบางสิ่งบางอย่าง เรียกว่าอาเรย์ และเราได้พูดคุยการจัดเรียงของราง เกี่ยวกับการเชื่อมโยงอาร์เรย์ใน C ในบริบทของตารางแฮชเพราะ สิ่งที่เชื่อมโยงอาร์เรย์เป็นจริงทั้งหมด เกี่ยวกับมีการทำที่สำคัญ แมปคู่ค่า และในกรณีนี้ถ้า keys-- เราคุ้นเคยกับอาร์เรย์จากซี ปุ่มตัวเลขดัชนี 0, 1, 2, 3 และค่านิยมเป็นสิ่งที่เราพบว่า อาร์เรย์ 0, อาร์เรย์ 1, 2 อาร์เรย์และอื่น ๆ ดังนั้นกุญแจที่มีดัชนี และค่านิยมที่มี สิ่งที่อยู่ในสถานที่อาร์เรย์ที่ ระบุโดยดัชนีที่ แต่ใน PHP, เราไม่ได้มีการทำเช่นนี้ ความคิดของอาร์เรย์ 0, อาร์เรย์ 1, 2 อาร์เรย์ อีกต่อไป ตอนนี้เราสามารถใช้คำพูดที่เกิดขึ้นจริง เพื่อแมกุญแจค่า และดังนั้นผมจึงสามารถพูดอะไรเช่นนี้ ฉันจะสร้างอาร์เรย์ที่ใช้ ไวยากรณ์วงเล็บตารางดังต่อไปนี้ $ พิซซ่า = วงเล็บเหลี่ยม "ชีส" แล้ว การเรียงลำดับของสัญกรณ์ลูกศรคู่นี้ 8.99 "ไส้กรอก" ลูกศร 10.99-- 9.99 เป็นต้น ดังนั้นสิ่งที่เกิดขึ้นที่นี่? สิ่งที่ฉันทำจริง? ฉันสร้างแมปคู่ค่าคีย์ ดังนั้นแทนที่จะพูดว่ายกตัวอย่างเช่น พิซซ่า 0, 1 ชิ้นพิซซ่า 2 ตอนนี้ผมสามารถพูดได้พิซซ่า ชีสไส้กรอกพิซซ่า และอ้างอิงถึงค่า เกี่ยวข้องกับพวกเขา ดังนั้นที่นี่เป็นกุญแจของเราในสีเขียว ชีส, ไส้กรอก, ผักไก่ควาย นี่คือลูกศรที่ทำให้เป็น การทำแผนที่คู่ค่าคีย์นี้ และแล้วที่นี่มีค่า ในสถานที่ที่อาร์เรย์ ดังนั้นจึงเป็นเหมือนอาเรย์บอกว่า 0 เท่ากับ 8.99 ที่สำคัญคือ 0 ค่าเป็น 8.99 ตอนนี้ผมสามารถพูดชีสอาร์เรย์หรือในเรื่องนี้ กรณีชีสพิซซ่าชีสเป็นกุญแจสำคัญ และสิ่งที่ฉันได้พบกับ ชีสพิซซ่าคือ 8.99 นั่นคือค่าที่เราพบ ดังนั้นผมจึงสามารถพูดได้สิ่งที่ต้องการ $ ชีสพิซซ่า = 7.99 บอกว่าฉันมีขาย ฉันต้องการ dis-- ฉันต้องการที่จะลดลง ราคาของพิซซ่าชีส หรือฉันสามารถใช้ผัก พิซซ่าเป็นส่วนหนึ่งของเงื่อนไข หรือฉันจะเพิ่มองค์ประกอบใหม่ของฉัน อาร์เรย์เช่นเดียวกับที่ฉันจะทำก่อนหน้านี้ ฉันสามารถเพิ่มองค์ประกอบใหม่นี้ อาเรย์ที่มีคีย์ "เบคอน" และความคุ้มค่า 13.49 แต่นี้แนะนำการจัดเรียงของปัญหา ถ้าคุณคิดเกี่ยวกับมันเป็นครั้งที่สอง วิธีการที่เราจะย้ำผ่านแถวนี้หรือไม่? ขวา? ใน C เราก็จะมี สำหรับวงโดยทั่วไปว่า จะวิ่งจาก 0 ไป ขนาดของอาร์เรย์ลบ 1 อาร์เรย์มีองค์ประกอบ n ในที่นี้ ดัชนีที่ถูกต้องเป็น 0 ถึง n ลบ 1 ดังนั้นเราจึงสามารถใช้สำหรับวงที่จะ ก้าวผ่านทุกองค์ประกอบเดียว แต่นั่นไม่ได้จริงๆ กรณีที่อีกต่อไปใช่มั้ย? ตอนนี้ที่เรามีคู่ค่าคีย์ แมปที่ปุ่มที่มีคำ ทำอย่างไรเราจะย้ำกว่าคำทั้งหมด? ดีโชคดี PHP มี วิธีที่จะจัดการกับเรื่องนี้เกินไป และเพื่อให้เราจะข้ามไป เพื่อลูปเป็นครั้งที่สอง ที่จะแนะนำชนิดที่สี่ของวงว่า ที่มีอยู่ใน PHP เรียกว่าห่วง foreach และสิ่งที่ห่วง foreach จะเป็น มันเป็นพื้นความคิดเดียวกัน คุณสามารถใช้มันสำหรับชนิดของอาร์เรย์ใด ๆ แต่มันเป็นพื้น ความคิดเช่นเดียวกับการห่วง, ยกเว้นแทนการใช้ ตัวเลขดัชนีคุณเพียงแค่ มีนี้ไวยากรณ์แปลกที่ คุณเรียกทุกองค์ประกอบเดียว ชื่อสำหรับวัตถุประสงค์ของว​​งนี้ ดังนั้นในกรณีนี้ foreach ($ อาร์เรย์เป็น $ กุญแจ) โดยทั่วไปเป็นที่บันทึกแสดงความคิดเห็น ด้านในของวง foreach ว่า มันจะไปมากกว่าทุกเดียว องค์ประกอบของอาร์เรย์ $ ซึ่งเป็นปกติ จะเป็นอาเรย์, แต่จริงๆสามารถชนิดของอาร์เรย์ใด ๆ ที่คุณต้องการใน PHP และเวลาที่ทุก สำหรับห่วงคุณอาจ ได้กล่าวว่า $ อาร์เรย์วงเล็บ $ i, คุณก็สามารถพูด $ ที่สำคัญ เพื่อที่ว่าจะกลายเป็นกุญแจสำคัญที่ $ นามแฝงสำหรับทุก ดัชนีของอาเรย์ของคุณ PHP, และเพื่อให้คุณสามารถใช้งานได้เช่นเดียวกับที่ ดังนั้นสำหรับตัวอย่างเช่นเราได้ ขณะนี้มีอาร์เรย์พิซซ่าของเรา ฉันได้ชนิดของมันซุก ในมุมที่นั่น เพื่อให้เราสามารถใช้ในการทำตัวอย่างรวดเร็ว ถ้าผมพูด foreach ($ พิซซ่าเป็น $ พิซซ่า), ดี, สิ่งที่เกิดขึ้น? ดีฉันจะย้ำถึงทุก องค์ประกอบหนึ่งของพิซซ่า $ อาร์เรย์ และทำเพื่อฉันจะเรียก ทุกองค์ประกอบเมื่อฉันภายใน ของร่างกายที่สำหรับวงที่ $ พิซซ่า เพื่อให้การจัดเรียงของ ยืนในการเรียกคืนที่พิซซ่า $ เป็นสแตนด์อินเพื่อพูด $ พิซซ่าวงเล็บ $ ฉัน ถ้าเราใช้สำหรับวงที่เรา สามารถไปจาก $ i = 0 ถึงในกรณีนี้ $ i = 3 ถ้าเราไม่ได้มีคู่ค่าที่สำคัญ นี่นี้จะเป็นองค์ประกอบที่ 0, 1, 2, 3, และเราจะใช้สำหรับวงที่จะไป พิซซ่า $ 0, ​​พิซซ่า $ 1, $ พิซซ่า 2 พิซซ่า $ 3 ดังนั้นขณะนี้เป็นเพียง $ พิซซ่าแทน ที่สำคัญแต่ละ ดังนั้นสิ่งที่นี้จะพิมพ์ออกมา? ผมพิมพ์ออกพิซซ่า $ สิ่งที่ฉันจะไปหา at-- ถ้าผมพิมพ์ออกพิซซ่า $, $ ฉัน? ขวา? ถ้าฉันจะพิมพ์ออกมา องค์ประกอบ ith ของพิซซ่า สิ่งที่ฉันจะพิมพ์? ฉันจะพิมพ์ ค่าที่ตำแหน่งนั้นใช่มั้ย? เช่นถ้าเรากำลังทำ นี้ในบริบทของซี เราไม่ได้มักจะใช้ iterator ของเรา ตัวแปร int i = 0 ฉันน้อยกว่า 3, ฉัน ++ ที่จะพิมพ์ออกมา 0, 1, 2, 3 เรากำลังพิมพ์ออกอาร์เรย์ 0, อาร์เรย์ 1, อาร์เรย์ 2 อาร์เรย์ 3 และเพื่อให้สิ่งที่พิมพ์ออกนี้ มันเป็นรายการของราคา 8.99, 9.99, 10.99, 11.99 ตอนนี้ทราบอย่างรวดเร็วที่นี่ ห่วง foreach ไม่จำเป็นต้อง พิมพ์สิ่งใน มันไม่ได้รับประกัน มันมักจะไม่ มันตามปกติในการสั่งซื้อใน ซึ่งองค์ประกอบที่มีการเพิ่มอาร์เรย์ ดังนั้นเพียงแค่หมีที่ในใจ มันอาจจะไม่อยู่ในลำดับที่ แต่ห่วง foreach จะย้ำ ทั่วทุกองค์ประกอบเดียว ของอาร์เรย์ในคำถาม ในกรณีนี้อีกครั้ง อาร์เรย์ที่เป็นพิซซ่า $ ฉันจะเปลี่ยนไวยากรณ์ แต่ถ้า ฉันต้องการทั้งที่สำคัญและความคุ้มค่า แทนที่จะพูดว่าพิซซ่า $ พิซซ่า $ ผมสามารถพูดได้นี้ และถ้าคุณมองไปที่สิ่งที่ฉันได้ ไฮไลต์ในสีเขียวที่นี่ ดูเหมือนว่าการทำแผนที่คู่ค่าคีย์ และดังนั้นหาก you-- แม้ว่าคุณจะไม่ได้ ทั้งหมดแน่ใจว่าสิ่งที่มันจะทำ คุณอาจจะสามารถคาดเดา เครื่องประดับที่ $ เป็นไป จะเป็นกุญแจสำคัญในกรณีนี้และ $ ราคาเป็นไปได้ที่ค่า ดังนั้นฉันแทนตอนนี้ทุกองค์ประกอบ ของ $ พิซซ่าเป็นคู่ค่าที่สำคัญ และตอนนี้ฉันสามารถดูได้ที่สำคัญและ ค่าซึ่งอาจจะมีประโยชน์ ตัวอย่างดังต่อไปนี้ "เป็นทั้ง" - นี้เป็นจำนวนมาก การพิมพ์ที่เกิดขึ้น here-- "เป็นทั้ง" เครื่องประดับ "ค่าใช้จ่าย $ พิซซ่า" ราคาแล้ว ผมพิมพ์ออกมาเป็นระยะเวลาและ n ทับขวา ดังนั้นตอนนี้แจ้งให้ทราบอีกครั้งฉันมีการเข้าถึง คีย์, ราดหน้า $ และค่าราคา $ เพื่อให้คุณสามารถคาดเดาสิ่งนี้ เป็นไปพิมพ์ออกมา? มีจำนวนมากเป็นงบการพิมพ์, แต่มีเพียงหนึ่ง n ทับขวา, จึงจะพิมพ์บางสิ่งบางอย่าง entire-- บนบรรทัดเดียวของรหัส ถ้าผมสามารถดูได้ที่สำคัญ และความคุ้มค่าแล้วตอนนี้ แทนที่จะเป็นเพียงแค่ความสามารถ ที่จะพิมพ์ออกราคา, ฉันสามารถพิมพ์ออกมาบางอย่างเช่นนี้ "พิซซ่าชีสทั้งค่าใช้จ่าย $ 8.99." และตอนนี้ฉันใช้ทั้งหมดของ keys-- ชีสไส้กรอกผัก ควาย chicken-- และคุณค่า 8.99, 9.99, 10.99, 11.99 ดังนั้น นั่นเป็นเพียงวิธีที่แตกต่าง ที่จะทำวง foreach ที่แทน เพียงแค่ให้คุณเข้าถึงค่า มันก็จะช่วยให้ you-- จะช่วยให้คุณ การเข้าถึงคีย์และค่าที่ ดังนั้นการพิมพ์ออกข้อมูล ผมเคยทำมาแล้วคู่ของ วิธีการที่แตกต่างกันคุณอาจจะได้สังเกตเห็น ทั้งสองฟังก์ชั่นเราได้เป็นหลัก เห็นการพิมพ์และการสะท้อน และสำหรับทุกเจตนาและสวยมาก วัตถุประสงค์ที่พวกเขากำลังตรงเดียวกัน They're-- มีความละเอียดมาก ความแตกต่างที่ไม่ได้คุ้มค่า ได้รับใน แต่โดยทั่วไปทุกที่ คุณสามารถใช้การพิมพ์ที่คุณอาจจะสามารถใช้ สะท้อนได้เป็นอย่างดี และที่ไม่ได้เพียงสองคนเท่านั้น PHP มีจำนวนมากที่แตกต่างกัน วิธีการที่จะพิมพ์สิ่งที่ออก และก็ยังมีวิธีการที่จะบูรณาการ ตัวแปรเข้ากลางของสตริง ดังนั้นจำ C จากคุณ จำสิ่งที่ฟังก์ชั่น เราสามารถใช้แทนตัวแปร ลงไปในสิ่งที่เราต้องการที่จะพิมพ์ออกมา? คุณอาจใช้วิธีนี้ ทำงานค่อนข้างมาก printf ใช่มั้ย? ดังนั้นนี่คือสิ่งที่เรามีมาก่อนภายใน บริบทของวง foreach ของเรา เรามีทั้งห้า งบการพิมพ์ที่แยกจากกัน เพราะเห็นว่าเป็นเพียงคนเดียว วิธีที่ผมรู้ว่าในเวลา วิธีการพิมพ์ข้อความ ผมไม่ทราบวิธีการที่จะบูรณาการ ราดหน้าตัวแปร $ เป็นรหัส PHP ของฉัน ดีถ้าฉันเพียงแค่นำเดาป่า printf ก็จริงจะได้ทำงาน printf เป็นหน้าที่ที่ฉันสามารถใช้ ใน PHP เช่นเดียวกับที่ฉันสามารถใช้มันใน C. และเพื่อให้บางสิ่งบางอย่างเช่นนี้ printf, อีกครั้งที่เราคุ้นเคยกับที่ % s แรกจะถูกแทนที่ ที่มีค่าของ $ เครื่องประดับ % s ที่สองจะถูกแทนที่ ที่มีค่าของราคาที่ $ และดังนั้นฉัน interpellating, ซึ่งเป็นเพียงวิธีแฟนซี ของฉันพูดติด ตัวแปรในสถานที่ ดังนั้นฉันเสียบ $ เครื่องประดับที่ % s สีแดงและราคาที่ $ สีน้ำเงิน% s เป็นแล้วฉันจะได้รับข้อความ "พิซซ่าชีสทั้งค่าใช้จ่าย $ 8.99." ไม่ใช่วิธีเดียวที่ฉันสามารถทำมันแม้ว่า บางทีฉันอาจจะต้องการที่จะใช้วิธีการนี​​้ นี้เป็นจริงสิ่งที่มากที่สุด เรียกว่าตัวแปร interpellation ฉันสามารถใช้เสียงสะท้อน ฉันสามารถใช้พิมพ์เกินไปที่เราจะเห็น แต่สิ่งที่เกิดขึ้นที่นี่? ก่อนอื่นผมต้อง หลบหนีเครื่องหมายดอลลาร์ เพราะจำได้ว่าเมื่อเราเป็นจริง พิมพ์ออกราคาของพิซซ่าที่ ฉันเป็นจริงพวกเขาเป็นรูปแบบ ตัวเลขทางการเงินที่มีเครื่องหมายดอลลาร์ แต่เรากำลังใช้สัญญาณดอลลาร์ยัง เพื่อเป็นตัวแทนของชื่อตัวแปรใน PHP และโดยเฉพาะอย่างยิ่งเมื่อฉัน ใช้วิธีการหยิกนี้ ตัวแปรรั้ง วิธี interpellation ฉันต้องการ ที่จะหลบหนีเครื่องหมายดอลลาร์ของฉันเพื่อให้มันไม่ได้ คิดว่าผมกำลังพูดถึงตัวแปร มันเป็นไปได้จริง ตัวอักษรพิมพ์เครื่องหมายดอลลาร์ ดังนั้นการจัดเรียงของ analogize มัน สิ่งที่คุณเห็นในตอนท้ายมี มันไม่จริง n เครื่องหมายพิมพ์ใช่มั้ย? มันพิมพ์ออกมาเป็นตัวอักษรบรรทัดใหม่ is-- นี้ก็ไม่ได้ไป เข้าสู่ระบบการพิมพ์เครื่องหมายดอลลาร์, ก็จะพิมพ์ออกมาเพียง ตัวอักษรเครื่องหมายดอลลาร์ ความคิดเดียวกัน ลำดับหนีสิ่งที่ สิ่งเหล่านี้จะเรียกว่า แต่สังเกตเห็นว่าผมไม่ได้ทำ การเรียงลำดับของ% s แทนใด ๆ ฉันแค่เสียบตัวอักษร ในตัวแปรเหล่านี้ และใน this-- สิ่งที่จะเกิดขึ้นที่นี่ คือค่าของ $ topping-- อีกครั้ง เพียงแค่ทำให้กับสิ่งที่เราได้รับ พูดคุยเกี่ยวกับชีส far-- เพื่อจะได้รับ เสียบมี และราคา $ จะเป็นสิ่งที่มีค่า ที่พิซซ่าวงเล็บ, ชีส, ซึ่งเป็น 8.99 และอื่น ๆ นอกจากนี้ยังจะพิมพ์ออกมา "พิซซ่าชีสทั้งค่าใช้จ่าย $ 8.99." และชอบพูดว่าฉันสามารถใช้ พิมพ์ที่นี่แทนการสะท้อน และการทำงานเป็น สวยมากเหมือนกัน มันจะพิมพ์ออกมาในสิ่งเดียวกัน ไม่มีทางที่จะทำมันอีก, และนี่คือข้อได้เปรียบอีก ของการทำงานร่วมกับ PHP สตริง เราสามารถทำสตริง เราสามารถทำเช่นนี้ใน C เกินไป โดยใช้ฟังก์ชั่นที่เรียกว่า strcat, แต่อีกครั้งที่เราต้อง เรียกใช้ฟังก์ชันที่แยกต่างหาก มันเป็นระเบียบทั้งหมดนี้จะทำอย่างไร เราต้องปอนด์รวมถึงสตริง มันเป็นผลิตใช่มั้ย? แต่ตอนนี้ผมก็สามารถใช้จุดนี้ผู้ประกอบการ เพื่อเชื่อมสายเข้าด้วยกัน ดังนั้นฉันเชื่อมโยง "เป็นทั้ง" และ แล้วสิ่งที่มูลค่าของเครื่องประดับ $ คือ และหลังจากนั้นอีก สตริง "ค่าใช้จ่ายพิซซ่า $" และแล้วสิ่งที่เชื่อมโยง มูลค่าของราคา $ คือ และจากนั้นในท้ายสุดผม ตรึงบน n เครื่องหมายระยะเวลา ดังนั้นนี้จะยัง พิมพ์ออกมา "ทั้งเป็น" - อีกครั้ง ถ้าเรากำลังพูดถึงครั้งแรก องค์ประกอบของ array-- พิซซ่าที่ "พิซซ่าชีสทั้งค่าใช้จ่าย $ 8.99." ระยะเวลา n ทับขวาอีกครั้งกับ เครื่องประดับราคา $ และ $ ทดแทนราคา สำหรับสิ่งที่เราได้ระบุไว้ใน foreach ของเรา เป็นห่วงการทำแผนที่คู่ค่าคีย์ PHP สามารถจัดการกับฟังก์ชั่น ฟังก์ชั่นมีการจัดเรียงของ หนึ่งที่ C อย่างที่เราเห็น เช่นเดียวกับตัวแปรที่เราไม่จำเป็นต้อง ระบุชนิดของการกลับมาของฟังก์ชั่นที่ เพราะมันไม่ได้เรื่องจริงๆ และเราไม่ได้ระบุ ชนิดข้อมูลของตัวแปรใด ๆ เพราะพวกเขาไม่ได้จริงๆ เรื่องเหมือนอย่างที่เราเคยเห็นใน PHP ฟังก์ชั่นทุกคนเป็นที่รู้จัก กับคำฟังก์ชั่น นั่นคือวิธีการที่เราแสดงให้ PHP ที่ สิ่งที่เรากำลังพูดถึงคือฟังก์ชั่น และเราจะได้ไม่ต้อง จัดการกับหลักที่ทุกคน เพราะล่ามที่ PHP ล่ามทำงานจากบนลงล่าง ไม่คำนึงถึง ถ้ามันเห็นคุณสามารถทำให้ การเรียกฟังก์ชั่นก็จะ ไปหาโทรฟังก์ชั่น ถึงแม้ว่ามันจะตามมาในภายหลัง แต่มันจะอ่านจากบนลง ด้านล่างดังนั้นเราจึงไม่จำเป็นต้องระบุ ที่นี่เป็นที่ที่คุณจะเริ่มต้น คุณเริ่มต้นในบรรทัดที่ 1 ของคุณ PHP และทำงานลงมาจากที่นั่น ดังนั้นนี่คือวิธีการที่เราจะสร้าง ฟังก์ชั่นที่เรียกว่า hard_square มันเห็นได้ชัดว่าจะใช้เวลาหนึ่ง พารามิเตอร์ที่ฉันโทร $ x ฟังก์ชั่นนี้มีความซับซ้อนเพียง เพื่อแสดงให้เห็นสิ่งต่างๆ เรายังคงมีค่าที่ส่งคืน ฉันใช้สำหรับวงที่นี่ แต่มันก็เป็นเพียงสิ่งนี้ จำนวนเงินที่เป็นเพียง $ x $ x ครั้ง สิ่งที่ฉันทำจริงเป็นเพียงการเพิ่ม x 0 x ครั้งหรือ $ x เพื่อเป็นศูนย์ $ x ครั้ง แต่มันได้อย่างมีประสิทธิภาพตรง เช่นเดียวกับการคูณ $ x $ x ครั้ง ฉันยังคงสามารถกลับค่า ในกรณีนี้ผล $, และผมได้ทำในฟังก์ชั่นของ PHP นี่คือวิธีที่คุณอาจจะใช้มันในบริบท ดังนั้นบางทีฉันภายในของไฟล์ PHP บาง ขอให้สังเกตสีฟ้ามีที่ ผมเคยใช้ตัวคั่น PHP ของฉัน วงเล็บมุมเครื่องหมายคำถาม? php ในระหว่างที่ผู้ที่มีทั้งหมดของ PHP ได้ว่าผมอยากจะเขียน ดังนั้นผมจึงเห็นได้ชัดว่ากำลังจะไป get-- ผมจะแจ้งให้ผู้ใช้ ให้ฉันจำนวนร้านค้าที่ ตัวแปรที่เก็บในตัวแปร $ x, สิ่งที่พวกเขาให้ฉัน แล้วฉันจะสะท้อน hard_square ของมูลค่าที่ และเห็นได้ชัดไป ที่จะตรึงบนบรรทัดใหม่ เป็นอย่างดีและต่อมาในวันที่ฉันจะ กำหนดฟังก์ชั่นเพื่อให้ hard_square ว่าเมื่อฉันทำ เรียกร้องให้ hard_square, มันรู้ว่าสิ่งที่ผมพูดถึง ตอนนี้ผมยังไม่สามารถทำ บางสิ่งบางอย่างเช่นนี้ นี่คือแตกต่างกันเล็กน้อย มันเกือบจะตรง เช่นเดียวกับสิ่งที่เราได้เห็นมาก่อน ยกเว้นแทนที่จะพูดว่าเพียง $ x มีเป็นพารามิเตอร์เพื่อ hard_square, ฉันพูด $ x = 10 ดังนั้นนี่คือตัวอย่างของ การเขียนโปรแกรมการป้องกัน ปกป้องโปรแกรมของคุณ ที่เป็นอันตรายต่อผู้ใช้ นี้เป็นวิธีหนึ่งที่จะทำข้อผิดพลาดบาง การตรวจสอบว่าเราทำไม่ได้จริงๆ มีเป็นตัวเลือกใน C. ที่เราอาจจะไม่เคย ระบุค่าเริ่มต้นของบางสิ่งบางอย่าง เรามักจะมีการตรวจสอบ ไม่ว่าจะเป็นตัวอย่างเช่น ถ้าเราทำให้การเรียกร้องให้ GetString มันเป็น ที่เหมาะสมที่สุดถ้าทันทีหลังจากที่เรา ตรวจสอบที่เราตรวจสอบ ไม่ว่าจะเป็นสตริง ว่าผู้ใช้ให้เรา ไม่เท่ากับโมฆะ, เพราะเราไม่ต้องการที่จะเริ่มต้น ทำงานกับสตริง นี่นี้เป็นวิธีการที่ เพื่อป้องกันการที่ หากผู้ใช้ไม่ได้ให้เราบางสิ่งบางอย่าง อย่างใดสิ่งที่เรากำลังจะทำอย่างไร ดีเราก็จะพูดสิ่งที่ พวกเขาไม่ได้ให้เรา เรากำลังจะเสียบแทน 10 ดังนั้นหากพวกเขาไม่ได้ให้เราค่า เพียงแค่ใช้ 10 โดยค่าเริ่มต้น และอื่น ๆ ที่นี่ สังเกตเห็นว่าฉันทำ โทรไป hard_square, แต่มีพร้อมรับคำไม่มี ให้กับผู้ใช้ใช่มั้ย? ฉันแค่โทรที่ว่างเปล่า แต่ฟังก์ชั่นของฉัน hard_square คาดว่าพารามิเตอร์ นี่คือสิ่งที่จะพิมพ์ออกมา? มันจะพิมพ์ออกมา 100 ใช่มั้ย? เพราะผู้ใช้ไม่ได้ ให้ฉันอะไร และเพื่อให้ฉันแค่จะถือว่า ที่ 10-- 10 เป็นค่าเริ่มต้น และเพื่อให้เรื่องนี้จะพิมพ์ ออก 100 ในสายของตัวเอง ไฟล์ PHP ไม่ต้อง เป็นเพียงไฟล์เดียว คุณสามารถรวมไฟล์หลาย ๆ ไฟล์เข้าด้วยกัน เช่นเดียวกับที่คุณสามารถในซีทาง เราไม่ว่าใน C โดยทั่วไปแล้วจะทำ #include ที่จะได้รับไฟล์ส่วนหัวดึง เราไม่ได้ทำอย่างนั้นใน PHP เราทำสิ่งที่เรียกว่า require_once แล้วมีทั้งนี้ สิ่งที่สิ่งที่ __dir__ นี้หรือไม่? นั่นเป็นเพียงพิเศษ ตัวแปรหรือพิเศษอย่างต่อเนื่อง จริงๆที่ระบุว่า ไดเรกทอรีปัจจุบันของคุณคือ และดังนั้นจึงจะไปดู ในไดเรกทอรีปัจจุบันของคุณ สำหรับไฟล์ที่เรียกว่า cs50.php ในตัวอย่างนี้ที่นี่ และก็จะไปติดแฟ้มที่ ที่ด้านบนของโปรแกรม PHP ของคุณ สมมติว่าคุณต้องใส่ ครั้งหนึ่งเคยเป็นสายที่ด้านบนของไฟล์ PHP ของคุณ ดังนั้น PHP ถูกนำมาใช้เป็นหลัก แต่ไม่ได้ใช้เฉพาะ เป็นภาษาสำหรับการเขียนโปรแกรม Web-based ที่จริงวิธีการที่จะมาเป็น แต่มันเป็นเต็มรูปแบบ ภาษาที่เราเคยเห็น เราได้เห็นสวยมากทุกสิ่ง ว่ามันสามารถทำเช่นนั้นมีความคล้ายคลึงกับซี และมันสามารถทำ heck ของ มากขึ้นกว่าที่ แต่เพราะมันเป็นภาษาที่เต็มรูปแบบและเรา สามารถทำโปรแกรมบรรทัดคำสั่งในนั้น เราสามารถเรียกใช้โปรแกรมบรรทัดคำสั่ง ทั้งหมดที่จำเป็นในการใช้คำสั่ง โปรแกรมบรรทัดที่เขียนใน PHP คือการที่คุณมีล่ามของ PHP ดังนั้นจึงเป็นที่จัดเรียงของคล้ายกับ มีคอมไพเลอร์ในระบบของคุณ ถ้าคุณต้องการที่จะรวบรวมรหัส C ของคุณ ที่จะเปิดเป็นแฟ้มที่ปฏิบัติการ คุณจำเป็นต้องมีล่ามของ PHP ที่มีอยู่ในระบบของคุณ เพื่อให้คุณสามารถแปลไฟล์ PHP สมมติว่าคุณทำและมักจะ ล่ามนี้เรียกว่า PHP, และก็มักจะมีการรวมมากที่สุด ดาวน์โหลดหรือติดตั้ง PHP ที่คุณสามารถได้รับออนไลน์และแน่นอน ชื่อของล่าม PHP ที่ ที่เรามีใน CS50, IDE สิ่งที่คุณทำคือไฟล์ PHP ประเภท และสิ่งที่โปรแกรมของคุณ จะทำมันเป็นเรื่อง จะวิ่งผ่าน ล่ามก็ จะไม่สนใจทุกอย่างที่ ไม่ได้อยู่ในระหว่างคำถาม mark-- หรือวงเล็บมุมเครื่องหมายคำถาม PHP, ตัวคั่น PHP และพิมพ์ออกมา และมันจะตีความและดำเนินการ รหัสภายในของตัวคั่น PHP ของคุณ ดังนั้นขอ pop ไป IDE และ CS50 มีลักษณะที่คู่ของไฟล์ PHP ที่ ทำงานคู่ของไฟล์ PHP ใน อินเตอร์เฟซบรรทัดคำสั่งของ CS50 IDE ดังนั้นที่นี่เราอยู่ใน IDE CS50, และฉันเอาเสรีภาพ การเปิดไฟล์ที่เรียกว่า hello1.php และเห็นได้ชัดเนื้อหาของเรื่องนี้ ไฟล์ที่เป็นเพียงตัวคั่น PHP มี และในระหว่างก้อง ("สวัสดีโลก") นี้เป็นโปรแกรม PHP ง่ายสวย ฉันแค่จะเลื่อนลง เพื่อหน้าต่าง terminal ของฉันที่นี่ และฉันจะพิมพ์เป็น PHP hello1.php, กด สวัสดีชาวโลก. นั่นอาจเป็นสิ่งที่เราเป็น คาดหวังว่ามันจะทำใช่มั้ย? ลองขึ้นไปและใช้เวลา ดูที่โปรแกรมอื่น hello2.php สวยมากในสิ่งเดียวกัน ไม่มากเกิดขึ้นที่นี่ เวลานี้แม้ว่าผมจะแจ้งให้ ผู้ใช้ที่จะให้ฉันชื่อของพวกเขา ฉันใช้ฟังก์ชั่นที่ที่ ReadLine อีกครั้ง $ = ชื่อที่ ReadLine นั่นคือพรอมต์ "คุณชื่ออะไร?" เห็นได้ชัดว่าผมพิมพ์ มันอยู่บนเส้นของตัวเอง และแล้วดังนั้นบรรทัดด้านล่าง ที่จะเป็นพรอมต์ ที่ผู้ใช้สามารถป้อนชื่อของพวกเขา และจากนั้นฉันใช้นิด ๆ หน่อย ๆ interpellation ตัวแปรที่นี่ในบรรทัดที่ 3 จะพิมพ์ออกมา "ฮัลโหล" และ สิ่งที่ผู้ใช้ชนิด ดังนั้นนี่คือคล้ายกับว่าสวัสดี จุลภาค% s ถ้าเราได้ใช้ printf ใน C. ดังนั้นขอไปและตีความโปรแกรมนี้ ดังนั้นอีกครั้งฉันจะเลื่อนลง เพื่อหน้าต่าง terminal ของฉัน PHP การ hello2.php คุณชื่ออะไร? ดั๊ก สวัสดีดั๊ก ฉันยังมีอีก ไฟล์ที่เรียกว่า hello3.php ฉันจะล้างของฉัน หน้าจอที่มีการควบคุมลิตร และฉันจะดำเนินการที่ คุณชื่ออะไร? ดั๊ก สวัสดีดั๊ก ดังนั้นพฤติกรรมที่เป็นเหมือน hello2.php แต่ทำไมมัน hello3.php? ดีนี่คือความแตกต่าง ในกรณีนี้แจ้งให้ทราบล่วงหน้า ในบรรทัดที่ 1 ที่นี่ ฉันมีบางสิ่งบางอย่างที่ไม่ได้ ในระหว่างคั่น PHP ฉันแค่พิมพ์ out-- หรือฉัน พิมพ์เพียง "คุณชื่ออะไร?" เมื่อล่าม PHP เห็นนี้มัน มีความคิดวิธีการตีความมัน PHP, และอื่น ๆ แทนการล้มเหลว มันเป็นเพียงแค่จะคายออก ดังนั้นสังเกตเห็นในบรรทัดที่ 3 ตอนนี้เรียกร้องให้ฉัน ที่ ReadLine ไม่มีอีกต่อไปพร้อมรับคำ ฉันแค่จริงที่เกิดขึ้นเมื่อ to-- ล่าม PHP เห็นนี้ ก็จะพิมพ์ออกมา "คุณชื่ออะไร?" จากนั้นก็จะเห็นโอ้ตกลง here's-- ทุกสิ่งทุกอย่างที่เป็นไปได้ ตีความว่าเป็น PHP ดังนั้น ที่ว่าทำไมงานนี้ ผมไม่จำเป็นต้องแจ้งให้ ผู้ใช้ to-- ภายในที่ ReadLine, ฉันสามารถมีมันนอก ของตัวคั่น PHP และอนุญาตให้ล่าม เพียงแค่พิมพ์ออกมาสำหรับผม ดังนั้นคุณจึงไม่จริงมีเพียง ที่จะมีหนึ่งชุดของตัวคั่น PHP ในโปรแกรมของคุณ จริงๆคุณสามารถมีหลายของพวกเขา, เปิดและปิดได้ตามต้องการ ดังนั้นลองมาดู ที่คู่ของโปรแกรม ใน IDE CS50 ที่เรา แสดงให้เห็นถึงความคิดของการมีนี้ หลายชุดที่คั่นด้วย PHP ตกลงดังนั้นฉันได้เปิดไฟล์ นี่เรียกว่า add1.php และแจ้งให้ทราบว่าสิ่งที่เกิดขึ้นที่นี่ เช่นเดียวกับก่อนที่ฉันมี ชุด PHP เดียวของตัวคั่น ฉันจะพิมพ์ ข้อความ "โปรดให้ฉันเป็นจำนวนมาก." แล้วฉันจะอ่านบรรทัดและ เก็บไว้ในตัวแปร $ num1 แล้วฉันจะพิมพ์ออกมาอีกครั้ง ให้ฉันเป็นจำนวนสอง อ่านบรรทัดจากผู้ใช้จัดเก็บ สิ่งที่พวกเขาพิมพ์ใน $ num2 เพิ่มพวกเขาร่วมกันและจัดเก็บที่ ส่งผลให้ในตัวแปรที่เรียกว่าผลรวม $, แล้วพิมพ์ออกมาว่า " ผลรวมของทั้งสองหมายเลข คือ "แล้ว interpellate มีผลรวมตัวแปร $ เพื่อให้เพียงทำงานนี้ ผ่านล่าม เพื่อยืนยันว่านี่คือสิ่งที่เราคาดหวัง PHP การ add1.php กรุณาให้หมายเลข 3 โปรดให้ฉันเป็นจำนวนสอง 4 ผลรวมของทั้งสองตัวเลขคือ 7 นั่นคือ 3 บวก 4 ตกลง? ดังนั้นไม่มีอะไรมากมีแฟนซี และตอนนี้เรามาเปิด add2.php ที่นี่ผมได้มีคู่ของของ PHP ที่คั่นชุดมีใช่มั้ย? สาย 1, 3-- เส้นที่ 1 และ 3 ไม่มีตัวคั่น PHP ดังนั้นเมื่อล่าม เห็นพวกเขาเป็นเพียง จะคายออกว่า สิ่งที่ฉันได้มีพิมพ์ ดังนั้นนั่นคือสิ่งที่ฉัน ทำทุกอย่างที่ฉันกระตุ้น บนเส้นที่ 2 และ 4 เราจะเห็นมาก คุ้นเคย $? php การจัดเรียงของตัวคั่น เพื่อให้ทั้งสองเส้น จะดำเนินการเป็น PHP และจากนั้นในบรรทัด 5 ผมมีนี้ สิ่งที่แปลกขวาที่นี่ใช่มั้ย? วงเล็บมุมนี้ เครื่องหมายคำถามเครื่องหมายเท่ากับ ฉันก็จะซูมเข้านิด ๆ หน่อย ๆ ต่อไป คุณสามารถดูนี้คือสิ่งที่ฉัน พูดคุยเกี่ยวกับที่นั่น $ นี้หรือไม่? = แต่กลับกลายเป็นว่าเป็นเรื่องปกติเพื่อให้ เหตุผลที่เราเปิดขึ้นชุดของ PHP เป็นตัวคั่นที่จะพิมพ์ออกค่า และนั่นคือสิ่งที่เรากำลังจะทำ แต่มีแม้กระทั่งการที่ชวเลข $? = คือชวเลข PHP พูด สิ่งที่ต้องการ $? php echo รวม ของ num1 และ num2 ดังนั้นนี่เป็นเพียงอีกหนึ่ง ชวเลขที่ ดังนั้นถ้าผมเรียกใช้โปรแกรมนี้, PHP add2.php ฉันจะซูมลงเล็กน้อย โปรดให้ฉันหมายเลข 4 โปรดให้ฉันเป็นจำนวนสอง และเนื่องจากผมไม่ได้จริงๆดูแลเกี่ยวกับ ชนิดข้อมูลใน PHP ผมสามารถพูดได้ 4.8 ผลรวมของทั้งสองจำนวนคือ 8.8 ฟังก์ชั่นที่มีลักษณะการทำงานที่สวยมาก ตรงเช่นเดียวกับที่เราคาดหวัง ได้เป็นอย่างดี และฉันมีหนึ่งเปิดมากขึ้น ขึ้นเรียกว่าที่นี่ dice.php ลองนี้อีกครั้ง ฉันมีอีกหนึ่งที่เรียกว่าที่นี่ dice1.php ซึ่งยังเห็น มีคำถามว่าวงเล็บมุม ทำเครื่องหมายสัญกรณ์เครื่องหมายเท่ากับในนั้น แต่แจ้งให้ทราบว่าในกรณีนี้ผม การเรียกฟังก์ชั่นแรนด์ซึ่งเป็นคุณ อาจคาดหวังสร้างตัวเลขสุ่ม "คุณรีด" และมันเป็นไป คำนวณบางจำนวนสุ่ม mod + 6 1 เพื่อที่จะให้ฉันหมายเลข อยู่ในช่วง 1 ถึง 6 โปรดจำไว้ว่าสมัยที่ 6 จะให้ฉัน ตัวเลขในช่วง 0-5 ที่ แต่ถ้าฉันเลียนแบบม้วนลูกเต๋า ซึ่งเป็นสิ่งที่ผมกำลังทำอะไรที่นี่ ฉันไม่ต้องการลูกเต๋าเหล่านี้จะไปจาก 0 5 ผมต้องการลูกเต๋าที่ไป 1-6 ดังนั้นนี้เป็นวิธีการที่จะได้รับ ผมอยู่ในช่วง 1 ถึง 6 ฉันทำเช่นนี้เป็นครั้งที่สอง ดังนั้นเห็นได้ชัดว่าฉันกำลังกลิ้ง สองลูกเต๋าในโปรแกรมนี้ ดังนั้นผมจะล้างหน้าจอของฉัน และฉันจะทำ php ที่ dice1.php คุณรีด 4 และ 2 และถ้าผมเรียกใช้โปรแกรม อีกครั้งคุณรีด 5 และ 5 ดังนั้นทุกครั้งที่ผมเรียกใช้โปรแกรมทุก ฉันได้รับตัวเลขที่แตกต่างกัน เพราะทุกครั้งที่ผมทำทุก ดังนั้นก็เริ่มต้น มันจะสร้างใหม่ ชุดของตัวเลขสุ่มสำหรับฉัน ดังนั้นหากเรากำลังใช้ในการ ใช้โปรแกรมจากซี เรากำลังใช้ในการพิมพ์ ./ ชื่อของโปรแกรมใช่ไหม? นั่นคือวิธีการที่เราได้ทำทุก โปรแกรมของเราใน C เพื่อให้ห่างไกล เราสามารถทำเช่นนี้ใน PHP ได้เป็นอย่างดี โดยการเพิ่มสิ่งที่เรียกว่า shebang ไปด้านบนของไฟล์ PHP ของเรา ฉันรู้ว่ามันเป็นชนิดของคำโง่ มันสั้นปังกัญชา นั่นเป็นครั้งแรกที่ตัวละครทั้งสองมี โปรดจำไว้ว่าเราเรียกเครื่องหมายอัศเจรีย์ บ่อยปังวิทยาการคอมพิวเตอร์ นอกจากนี้ยังอาจจะมีสำหรับบางที่คมชัด มีสองวิธีที่จะตีความมันเป็น แต่มันเป็นพื้นจัดเรียงพิเศษ คำสั่งที่ล่าม PHP เข้าใจเป็นโอ้ฉันต้องการ คุณสามารถรันโปรแกรมนี้ ซึ่งเป็นที่เห็นได้ชัด / ผู้ใช้ / bin / PHP, ซึ่ง เป็นจริงที่ล่าม PHP โดยเฉพาะอาศัยอยู่บนระบบของเรา ดังนั้นสิ่งที่เกิดขึ้น it's-- ที่นี่ก็คือ ล่ามเข้าใจโอ้ ฉันควรเห็นได้ชัดที่จะใช้ ในโปรแกรมนี้ในการเรียกใช้แฟ้มนี้ และดังนั้นจึงช่วยให้คุณ จะข้ามขั้นตอน ต้องบอกว่าเป็น PHP something.php มีการจับเป็นอีกคนหนึ่ง ที่นี่ซึ่งก็คือว่าถ้าเรา ต้องการโปรแกรมของเราไป ทำงานตามที่คาดเรา ต้องทำสิ่งที่เรียกว่า การเปลี่ยนแปลงสิทธิ์ในแฟ้ม และเราจะ go-- และเราพูดคุยเล็ก ๆ น้อย ๆ อีกเล็กน้อยเกี่ยวกับการเปลี่ยนแปลงสิทธิ์ในแฟ้ม ในวิดีโอของเราใน MVC แต่พอไป บอกว่านี่คือสิ่งที่คุณต้องทำ เพื่อที่จะทำให้คุณ .php ไฟล์ปฏิบัติการ ดังนั้นลองมาดูที่นี้เป็น ตัวอย่างสุดท้ายของเรามากกว่าใน CS50 IDE ดังนั้นที่นี่ใน IDE ฉันมีสองไฟล์ในนี้ PHP ไดเรกทอรีที่ปรากฏไม่ได้ที่จะ เรียกว่า .php ฉันมีฟังก์ชั่นที่เรียกว่า add-- ฉันมีไฟล์ที่เรียกว่า add3 และไฟล์ที่เรียกว่า dice2 ดังนั้นลองมาอย่างรวดเร็ว ดูและเปิด add3 และในขณะที่คุณสามารถดูที่จุดเริ่มต้น ของไฟล์ของฉันฉันมี shebang นี้ใช่มั้ย? กัญชาเครื่องหมายอัศเจรีย์นี้ ตอนนี้คุณอาจจะยัง แจ้งให้ทราบว่าด้วยเหตุผลบางอย่าง ฉันไม่ได้มีไวยากรณ์ใด ๆ ไฮไลต์อีกต่อไป และนี่คือสิ่งที่ฉันพูดพาดพิงถึงก่อนหน้านี้ ซึ่งเป็นว่าถ้าผมไม่ได้ตั้งชื่อไฟล์ของฉัน .php, ฉั​​นไม่ได้มีผลประโยชน์ ของการเน้นไวยากรณ์อีกต่อไป ไฟล์นี้จะเรียกว่าเพียงแค่ add3 เพื่อที่จะสามารถทำงานได้ในภายหลัง กับ add3 ./ และไม่ ./ add3.php ดังนั้น reason-- ก็ยังคง ดีก็ยังคงถูกต้อง PHP, แต่ไม่ได้เน้นไวยากรณ์เพราะ ไฟล์นี้ไม่ได้เรียกว่า something.php นั่นคือความแตกต่างที่แท้จริงเพียงอย่างเดียว ที่นี่บวก shebang ดังนั้นเรามาดูสิ่งที่เกิดขึ้นเมื่อ ฉันพยายามเรียกใช้โปรแกรมนี้ ./ add3 เช่นเดียวกับฉันจะมีซีทุบตี ./ รับอนุญาต add3 ปฏิเสธ นี่คือสิ่งที่คุณกำลังจะ เพื่อดูว่าคุณลืม ที่จะใช้คำสั่ง chmod เพื่อเปลี่ยน สิทธิ์ของไฟล์ มันจะเปิดออก, PHP ปกติ ไฟล์ก็ไม่สามารถที่จะดำเนินการ พวกเขาสามารถตีความได้ แต่เรา ทำสิ่งที่แตกต่างกันเล็กน้อยที่นี่ เรากำลังดำเนินการมัน และดังนั้นผมจึงจำเป็นต้องเพิ่มได้รับอนุญาต ของการดำเนินการ chmod A + x เพื่อ add3 แล้วฉันสามารถพูดได้ add3 ./ โปรดให้ฉันเป็นจำนวนมาก 5, 6 ผลรวมของทั้งสองจำนวนคือ 11 ในทำนองเดียวกันผมได้ chmoded แล้ว dice2 ดังนั้นฉันสามารถเพียงพิมพ์ ./ dice2, คุณรีด 1 และ 1 คุณ รีด 5 และ 4 และอื่น ๆ ดังนั้นที่สวยมาก ความคิดของไวยากรณ์ PHP ใช่มั้ย? มีจำนวนมากที่จะเป็นได้รับผ่านฉันรู้ว่า แต่หวังว่าคุณเคยเห็นในขณะนี้ว่า PHP ไม่ได้จริงๆที่แตกต่างจาก C และจริงๆทำให้เราสามารถ ที่จะใช้สิ่งขึ้นรอยหรือสอง เราไม่ได้จริงๆต้องกังวล มากเกินไป about-- ที่เราทำไม่ได้จริงๆ ต้องกังวลมากเกินไปเกี่ยวกับ รายละเอียดในระดับต่ำเรา จะต้องกังวลเกี่ยวกับ C ใช่มั้ย? เราสามารถมุ่งเน้นไปที่สูงขึ้น สิ่งที่ทุกระดับ ช่วยให้เราสามารถที่จะทำและจะใช้สำหรับการ รับว่ามันจะทำงานให้เรา ดังนั้นจึงช่วยให้เรามีความสามารถในตอนนี้ เปลี่ยนจาก C ถึง PHP, เพื่อให้โปรแกรมที่มีมากขึ้น และบางทีอาจจะซับซ้อนมากที่แข็งแกร่งมากขึ้น ดังนั้นผมจึงหวังว่าคุณมีการทำงานที่สนุก ด้วย PHP และฉันลอยด์ดั๊ก นี่คือ CS50