Giáo trình Kỹ thuật lập trình căn bản

CHƯƠNG 1 : GIỚI THIỆU, CÀI ĐẶT VÀ CẤU HÌNH
APACHE, PHP VÀ MYSQL
I_ APACHE HTTP SERVER
1_Giới thiệu Apache HTTP Server
Dự án Apache là một sự cố gắng phát triển phần mềm cộng tác nhắm đến việc tạo ra một HTTP
server mạnh mẽ, có hạng thương mại, được đề cao,và mã nguồn thực hiện miễn phí. Dự án được
tham gia quản lý bởi một nhóm người tình nguyện trên toàn thế giới sử dụng internet và Web để
truyền thông , dựng kế hoạch và phát triển server . Những người tình nguyện này được biết đến
như là nhóm Apache. Thêm nữa, hàng trăm người sử dụng đã đóng góp các ý tưởng, mã và các
tài liệu cho dự án.
Vào khoảng tháng 2 năm 1995, phần lớn phần mềm server được ưa chuộng trên web là tên miền
HTTP daemon công cộng được phát triển bởi Rob McCool tại trung tâm quốc gia của các ứng
dụng siêu máy tính, trường đại học Illinois, Urbana-Champaign.
Tuy nhiên, sự phát triển httpd đó đã bị ngưng trệ sau khi Rob rời NCSA vào khoảng giữa năm
1994, và rất nhiều nhà phát triển web đã phát triển phần mở rộng của chính họ và khắc phục lỗi
trong sự cần thiết của một sự phân phát chung. Một nhóm nhỏ của các nhà phát triển web này, đã
kết hợp với nhau thông qua e-mail là chính, kết hợp cùng với nhau cho mục đích phối hợp những
thay đổi của họ ( trong hình thức các miếng vá).
Bằng cách dùng httpd 1.3 làm nền, họ đã thêm vào toàn bộ các miếng vá đã được công bố và các
tính năng cao cấp khác, thử nghiệm trên chính các server của họ, và cho ra đời phiên bản công
khai chính thức đầu tiên (0.6.2) của server Apache trong tháng 4 năm 1995.
Server Apache ban đầu đã là một sự thành công lớn, nhưng họ cho rằng mã ban đầu cần phải
được kiểm tra kỹ lưỡng và thiết kế lại. Trong suốt tháng 5 năm và tháng 6 năm 1995, Robert
Thau đã thiết kế một kiến trúc server mới( mã được đặt tên là Shambhala) nó bao gồm một cấu
trúc module và API cho việc mở rộng được tốt hơn. Nhóm làm việc đã chuyển sang nền server
mới này từ tháng sáu và đã thêm các đặc điểm từ phiên bản 0.7.x, đưa đến kết quả trong Apache
0.8.8 ( và các anh em của nó) trong tháng tám.
Sau khi phát hành rộng rãi bản thử nghiệm beta, rất nhiều lỗ hổng trong các nền khác nhau đã
được tìm thấy, một tập tài liệu mới ( của David Robinson), và quá trình thêm rất nhiều các chức
năng trong dạng của các module chuẩn của họ, Apache 1.0 đã được phát hành vào ngày1 tháng
12 năm 1995. 
pdf 56 trang thiennv 08/11/2022 3340
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Kỹ thuật lập trình căn bản", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfgiao_trinh_ky_thuat_lap_trinh_can_ban.pdf

Nội dung text: Giáo trình Kỹ thuật lập trình căn bản

  1. 4_Cài đặt PHP trên Windows Cài đặt trên các hệ thống Windows 98/Me/NT/2000/XP Có hai cách chính để cài đặt PHP cho Windows: Cách thông thường hoặc bằng cách sử dụng chương trình InstallShield installer. 4.1_Windows InstallShield Trình cài đặt PHP trênWindows có trên trang web tại www.php.net. Nó cài đặt phiên bản CGI của PHP và, cho IIS, PWS, và Xitami, cấu hình web server tốt. Chú ý rằng phiên bản này không cài đặt bất kỳ phần mở rộng hoặc server api phiên bản của PHP nào. Cài đặt HTTP server mà ta đã chọn trên hệ thống của ta và đảm bảo rằng nó hoạt động tốt. Chạy trình cài đặt và theo các hướng dẫn được cung cấp bởi trình cài đặt tự động. Có hai loại cài đặt được hỗ trợ, standard, cung cấp các giá trị mặc định cho tất cả các thiết lập có thể , và advance, yêu cầu một số câu hỏi để hoàn tất quá trình cài đặt. Trình cài đặt tự động hội tụ đủ các thông tin để thiết lập file php.ini và cấu hình webserver để sử dụng PHP. Một khi tiến trình cài đặt được hoàn thành, trình cài đặt sẽ báo tin cho ta nếu ta muốn khởi động lại hệ thống , khởi động lại server, hoặc chỉ bắt đầu dùng PHP. 4.2_Hướng dẫn cách cài đặt từ file nhị phân zip trên Windows Phần hướng dẫn cài đặt này sẽ giúp ta cài đặt và cấu hình PHP trên các webserver Windows 9x/Me/NT/2000/XP .Phần hướng dẫn này có thể phù hợp với các phiên bản của : Apache 1.3.x Apache 2.0.x (bản thí nghiệm) OmniHTTPd 2.0b1 và trên nữa Oreilly Website Pro Xitami Netscape Enterprise Server, iPlanet PHP 4 cho Windows với hai cách thức thực hiện - một chương trình CGI có khả năng thực thi (php.exe), và một vài module SAPI (ví dụ php4isapi.dll). Dạng sau thì mới đối với PHP4 và cung cấp cải tiến một cách đáng kể các thao tác và một vài chức năng mới.Tuy vậy, chú ý rằng các module SAPI không thực sự được xem như là sản phẩm chất lượng cao. Trong trường hợp cá biệt, với module ISAPI, bạn sẽ gặp phải những vấn đề có tính đăc biệt trầm trọng trên các nền cũ hơn . Lý do cho điều này là các module PHP SAPI đang sử dụng phiên bản luồng an toàn cho mã PHP, điều này mới so với PHP,và cũng chưa được kiểm nghiệm và kiểm chứng một cách đầy đủ để có thể xem như là hoàn toàn vững chắc và ổn định, và sự thực là cũng có một số nhỏ lỗi .Mặt khác, một vài người đưa ra báo cáo các kết quả rất tốt với các module,và có rất ít các báo cáo có vấn đề với phiên bản module Apache. Nếu ta chọn một trong các module SAPI và dùng Windows 95, hãy chắc rằng ta phải tải bản cập nhật DCOM tại địa chỉ: " Cho module ISAPI, yêu cầu một bản ISAPI 4.0 tương thích Web server (đã được kiểm tra trên IIS 4.0, PWS 4.0 và IIS 5.0). IIS 3.0 không được hỗ trợ; Ta sẽ phải tải về và cài đặt WinNT4.0 và tuỳ chọn IIS 4.0 nếu ta muốn PHP hỗ trợ . 10
  2. Các bước dưới đây sẽ thao tác trên tất cả các trình cài đặt trước khi có các chỉ dẫn rõ ràng với server. Giải nén file được tải vào một thư mục nào đó. C:\PHP\ là tốt nhất để bắt đầu. Bạn cần phải chắc rằng các file dlls mà php dùng có thể được tìm th ấy một cách dễ dàng. Các dlls rõ ràng sẽ liên quan đến loại webserver nào ta dùng và nơi nào ta muốn chạy php như là một cgi hoặc là một module server. Php4ts.dll thường xuyên được sử dụng. Nếu ta đang dùng một server module ( ví dụ isapi hoặc apache) khi đó ta cần các file dlls liên quan từ thư mục sapi . Nếu ta đang sử dụng các php dll mở rộng khi đó ta sẽ cần chúng . Để chắc rằng các dll có thể được tìm thấy, ta có thể copy chúng vào thư mục hệ thống (winnt/system hoặc windows/system) hoặc bạn phải chắc rằng chúng chứa trong cùng một thư mục với thư mục có chứa php thực thi hoặc dll webserver của ta (ví dụ php.exe, php4apache.dll). Chép file php.ini vào thư mục Windows hoặc Winnt, winnt4. Biên tập file php.ini : Ta cần phải thay đổi thiết lập 'extension_dir' tới thư mục cài đặt php hoặc nơi ta đặt các file 'php_*.dll', ví dụ c:\php Đặt 'doc_root' chỉ tới webservers document_root. Ví dụ: c:\apache\htdocs hoặc c:\webroot Chọn các mở rộng ta muốn được tải khi php,chú ý một số mở rộng đã được tạo ra trong các phiên bản của Windows. Ta có thể bỏ các dấu chú thích trên các dòng như 'extension=php_*.dll' trong php.ini để tải các mở rộng. Chú ý rằng thư mục mibs được cung cấp với phát hành của Windows chứa các file hỗ trợ cho SNMP. Thư mục này sẽ được chuyển tới DRIVE:\usr\mibs (DRIVE là ổ đĩa nơi ta cài PHP) 4.3_Cài đặt các chức năng mở rộng trên Windows Sau khi cài đặt PHP và một webserver trên windows, ta có lẽ cũng muốn cài đặt thêm một số mở rộng để thêm các chức năng. Bảng dưới đây mô tả một vài chức năng có sẵn. Ta cũng có thể thêm các chức năng bằng cách bỏ các dấu chú thích đứng trước các file php_*.dll trong file php.ini. Chú ý: Một vài mở rộng dll yêu cầu theo mở rộng của PHP , ta nên copy các file dll từ thư mục dlls trong gói phát hành vào thư mục windows/system hoặc winnt/system32. Nếu ta đang có các file dll này rồi, ta chỉ ghi đè chúng trong trường hợp một vấn đề gì đó làm việc không chính xác. Trước khi ghi đè chúng, tốt nhất là ta sao lưu chúng hoặc chuyển chúng vào một thư mục khác chỉ để đề phòng một cái gì đó lỗi. Download phiên bản sau nhất của Microsoft Data Access Components (MDAC) Cho nền của bạn, đăc biệt với người dùng Microsoft Windows 9x/NT4. MDAC có sẵn tại địa chỉ . Cũng cần chú ý rằng một số mở rộng đòi hỏi các thư viện của các hãng thứ 3, ví dụ php_oci8.dll cần các thư viện client Oracle 8 được cài đặt trên hệ thống của ta. Điều này không được cung cấp với PHP. Chú ý: Các dlls cho phần mở rộng của PHP được bắt đầu bằng tiền tố ‘php_’ điều này tránh sự lộn xộn giữa các mở rộng của PHP và các thư viện của các hãng thứ 3 cung cấp. Chú ý: Trong PHP 4.0.5 hỗ trợ MySQL, ODBC, FTP, Calendar, BCMath, COM, PCRE, Session, WDDX và XML được kết hợp vào. 11
  3. 5_Cấu hình PHP với Web server 5.1_Cài đặt PHP trên Windows với Apache 1.3.x Có hai cách để thiết lập PHP để làm việc được với Apache 1.3.x trên Windows. Một là sử dụng file nhị phân CGI (php.exe), cách còn lại là dùng Apache module .dll. Trong cách sau, ta phải dừng Apache server, và biên tập file httpd.conf hoặc srm.conf để cấu hình Apache làm việc với PHP. 5.2_Cài đặt PHP cho Apache như là một module Phiên bản 4.1 giới thiệu module sapi an toàn hơn, theo đánh giá thì ta nên cấu hình PHP như là một module của Apache thì tốt hơn. Để thực hiện điều này, ta phải nạp file php4apache.dll trong Apache httpd.conf. Chú ý: Bất kỳ khi nào ta nạp php4apache.dll , php4apache.dll cần có php4ts.dll để được tính đến trong phân bố PHP 4. php4apache.dll dựa trên php4ts.dll được nạp sớm như là Apache tải php4apache.dll. Nếu php4ts.dll không được tìm thấy, ta sẽ nhận được một lỗi : Cannot load c:/php/sapi/php4apache.dll into server Vậy thật sự php4ts.dll được nạp từ đâu ? php4ts.dll được tìm trong thứ tự như sau : 1) trong thư mục nơi apache.exe từ đó được bắt đầu 2) trong thư mục mà php4apache.dll từ đó được nạp 3) trong thư mục %SYSTEMROOT%\System32, %SYSTEMROOT%\system và %SYSTEMROOT% . Chú ý: %SYSTEMROOT%\System32 chỉ đúng với Windows NT/2000/XP) 4) trong toàng bộ %PATH% Thông thường ta chỉ cần copy nó vào thư mục %SYSTEMROOT%\System32. Sau khi ta đã thiết lập một cách đúng đắn, ta sẽ cấu hình Apache để nạp module PHP4 chỉ cần thêm vài dòng vào file httpd.conf: LoadModule php4_module c:/php/sapi/php4apache.dll AddModule mod_php4.c AddType application/x-httpd-php .php Chú ý: Đặc biệt các phiên bản mới hơn của Apache không cần định hướng AddModule . Ta phải đặt file php.ini ở một trong hai nơi sau: 1) trong thư mục cài đặt Apache (ví dụ. c:\apache\apache) 2) trong thư mục %SYSTEMROOT% . 5.3_Cài đặt PHP cho Apache như là CGI nhị phân Nếu bạn muốn cài đặt PHP như là CGI nhị phân, trước hết hãy đọc trang này trước: và sau đó nếu ta thật sự chắc chắn, cần chèn những dòng sau vào file conf: ScriptAlias /php/ "c:/php/" AddType application/x-httpd-php .php 12
  4. Action application/x-httpd-php "/php/php.exe" Để phòng ngừa xa, ta nên thay “/php” ScriptAlias thành một cái gì đó ngẫu nhiên hơn, để ngăn chặn nhị phân được gọi trực tiếp, như là một sự bảo mật rủi ro. Nhớ rằng khi ta hoàn thành việc khởi động lại server, ví dụ, NET STOP APACHE tiếp đến là NET START APACHE Để sử dụng chức năng mã nguồn được làm sáng, thêm dòng sau vào file apache httpd.conf : AddType application/x-httpd-php-source .phps Chú ý, điều này chỉ làm việc khi ta cài đặt php là module sapi. Nếu bạn thích dùng đặc điểm này với cgi nhị phân, hãy tạo một file mới và dùng hàm show_source("path/to/original_file.php"); 5.4_Gạch trái hay gạch phải trong đường dẫn? Trên Win-Apache, tên đường dẫn có thể gồm cả gạch trái và gạch phải. Ví dụ: LoadModule php4_module C:\php\sapi\php4apache.dll làm việc tốt như: LoadModule php4_module C:/php/sapi/php4apache.dll Ta cũng có thể trộn lẫn hai kiểu gạch: LoadModule php4_module C:\php/sapi\php4apache.dll 13
  5. CHƯƠNG 2 : NGÔN NGỮ LẬP TRÌNH SCRIPT PHP I_CÚ PHÁP CƠ BẢN 1_Sự thoát khỏi mã HTML Có 4 cách để thoát khỏi mã HTML và thực hiện “ chế độ mã PHP” Ví dụ 1: Các cách để thoát khỏi mã HTML: 1. 2. 3. echo ("some editors (like FrontPage) don't like processing instructions"); 4. Cách thứ nhất chỉ có thể được thực hiện có nếu các tag ngắn đã được làm cho có thể. Điều này có thể được thực hiện bằng cách cho phép cấu hình short open tag thiết lập trong file cấu hình của PHP, hoặc bằng cách biên dịch PHP với tuỳ chọn –enable-short-tags để cấu hình. Cách thứ hai là phương pháp thông thường được yêu thích hơn, là nó cho phép thế hệ tiếp theo XHTML có thể dễ dàng được thực thi với PHP. Cách thứ ba là chỉ ra rõ PHP l à một ngôn ng ữ script. Cách thứ tư thì chỉ được phép nếu các tag kiểu ASP đã được phép sử dụng các tag asp thiết lập cấu hình. Chú ý: Hỗ trợ cho các tag ASP đã được thêm vào trong phiên bản 3.0.4 Tag đóng cho khối sẽ bao gồm đường thẳng mới kéo dài ngay lập tức nếu nó được hiển thị. 2_Ngăn cách các chỉ dẫn Các chỉ dẫn được ngăn cách giống như trong ngôn ngữ C hoặc Perl-kết thúc mỗi câu lệnh là một dấu chấm phẩy. Tag đóng (?>) cũng ngụ ý tới cuối của dòng lệnh, bởi vậy sau đây là các câu lênh tương đương: 14
  6. 3_Các lời chú thích PHP hỗ trợ các kiêủ chú giải như của ‘C’,’C++’ và shell Unix . Ví dụ: Các kiểu chú giải “one line” thật sự chỉ chú giải tới cuối dòng hoặc khối hiện tại của mã lệnh PHP, được đưa lên trước. This is an example. The header above will say 'This is an example'. Bạn sẽ phải cẩn thận không được đặt các chú thích của ‘C’, nó có thể xảy ra khi ghi chú các khối lớn. II_CÁC KIỂU DỮ LIỆU 1_Kiểu số nguyên Các số nguyên có thể được chỉ ra bằng cách sử dụng bất kỳ các cú pháp sau: $a = 1234; # số thập phân $a = -123; # Một số âm $a = 0123; # số hệ cơ số 8 (tương đương số 83 hệ thập phân) $a = 0x12; # số hệ 16 (tương đương số 18 hệ thập phân) Kích cỡ của một số nguyên phụ thuộc vào nền, mặc dù một giá trị lớn nhất khoảng 2 tỷ cũng là một giá trị thông thường (đó là 32 bit đã được đánh trị). 2_Các số thực dấu chấm động Các số thực dấu chấm động (“doubles”) có thể được chỉ ra bằng cách dùng một trong các cú pháp sau: $a = 1.234; $a = 1.2e3; Kích cỡ của một số thực dấu chấm động phụ thuộc vào nền, mặc dù một giá trị lớn nhất tương đương 1.8e308 với mức đúng đắn đến 10 chữ số thập phân cũng chỉ là một giá trị thông thường(đó là định dạng 64 bit IEEE). Chú ý: Cũng khá thông thường rằng một số thập phân giống như 0.1 hoặc 0.7 không thể được chuyển đổi thành các bản sao nhị phân của chính bản thân chúng mà không có một chút sai lệch nào. Điều này có thể dẫn đến những kết quả khó hiểu. Ví dụ: floor((0.1+0.7)*10) thông thường sẽ trả về 7 thay vì chính xác là 8 là vì kết quả cuối cùng có thể là một số: 7.9999999999 15
  7. Điều này có liên quan đến một sự thật là không thể chính xác trong một số các biểu thức phân số trong ký hiệu thập phân với một sự hạn chế về các số. Ví dụ: 1/3 trong dạng thập phân trở thành 0.333333333 Bởi vậy không bao giờ có giá trị chính xác cho các kết quả là một số động và không bao giờ so sánh các số trỏ động với sự ngang bằng. Nếu ta thật sự muốn sự đúng đắn cao hơn, ta sẽ dùng các hàm toán học chuyên biệt hoặc thay vì các hàm gmp. 3_Các chuỗi Các chuỗi có thể được chỉ ra bằng cách dùng một trong hai tập phân định. Nếu chuỗi được đóng lại trong dấu nháy kép(“), số lượng bên trong chuỗi sẽ được mở rộng ra (phụ thuộc vào một số hạn chế của từ loại). Cũng như C và Perl, dấu xổ ngược (“\”) có thể được sử dụng trong việc chỉ ra các ký tự đặc biệt: Thứ tự Ý nghĩa \n xuống dòng (LF hoặc 0x0A trong ASCII) \r trở về đầu dòng (CR hoặc 0x0D trong ASCII) \t Tab ngang (HT hoặc 0x09 trong ASCII) \\ xổ ngược \$ dấu đô la \" Nháy kép thứ tự của các ký tự phù hợp với biểu thức thông thường là một ký tự trong hệ cơ \[0-7]{1,3} số 8 thứ tự của các ký tự phù hợp với biểu thức thông thường là một ký tự trong hệ cơ \x[0-9A-Fa-f]{1,2} số 16 Nếu ta cố gắng để đưa ra bất kỳ một ký tự nào khác , cả dấu xổ trái và ký tự sẽ là đầu ra. Trong PHP3, một lời cảnh báo sẽ được phát ra tại mức E_NOTICE khi điều này xảy ra. Trong PHP4, không một lời cảnh báo nào được đưa ra. Cách thứ hai để đưa ra một chuỗi sử dụng dấu nháy đơn(“ ‘ “).Khi một chuỗi được bao bởi dấu nháy đơn, chỉ có những bỏ qua sẽ được hiểu là “\\” và “\”.Điều này nhằm mục đích tạo sự thuận lợi, bởi vậy ta có thể dùng dấu nháy đơn hoặc dấu xổ ngược trong một chuỗi trích dẫn đơn. Số lượng sẽ không được trải rộng ra trong một chuỗi trích dẫn đơn. Cách khác để định giới các chuỗi là sử dụng cú pháp (“<<<”). Trước hết sẽ cung cấp một định danh sau khi thực hiện <<<, tiếp theo là chuỗi, và sau đó là định danh giống ban đầu để đóng chú thích. Định danh đóng phải bắt đầu trong cột đầu tiên của dòng. Cũng vậy, định danh được sử dụng phải theo sau các quy tắc đặt tên giống nhau như là các nhãn khác trong PHP:Nó chỉ chứa các ký tự chữ và số và các dấu gạch dưới, và phải bắt đầu với ký tự không phải là số hoặc gạch dưới. 16
  8. foo = 'Foo'; $this->bar = array('Bar1', 'Bar2', 'Bar3'); } } $foo = new foo(); $name = 'MyName'; echo foo. Now, I am printing some {$foo->bar[1]}. This should print a capital 'A': \x41 EOT; ?> Các chuỗi Strings may be concatenated using the '.' (dot) operator. Note that the '+' (addition) operator will not work for this. Please see String operators for more information. Characters within strings may be accessed by treating the string as a numerically-indexed array of characters, using C-like syntax. See below for examples. Ví dụ. Vài ví dụ về chuỗi 17
  9. Number: 9 ' */ $num = 9; $str = " Number: $num "; /* This one will be ' Number: $num ' */ $num = 9; $str = ' Number: $num '; /* Get the first character of a string */ $str = 'This is a test.'; $first = $str[0]; /* Get the last character of a string. */ $str = 'This is still a test.'; $last = $str[strlen($str)-1]; ?> 18
  10. Sự chuyển đổi chuỗi Khi một chuỗi được xác định là một giá trị số, giá trị kết quả và kiểu được mô tả như sau: Chuỗi sẽ ước lượng như là một số double nếu nó chứa bất kỳ một trong số các ký tự ‘.’,’e’, or ‘E’. Trong trường hợp khác, nó sẽ ước lượng là một số nguyên. Giá trị được xác định bởi phần ban đầu của chuỗi. Nếu chuỗi bắt đầu với số liệu là số, nó sẽ là giá trị được dùng. Trong trường hợp khác, giá trị sẽ là 0 . Số liệu dạng số là một dấu hiệu tuỳ chọn, được theo sau bởi một hoặc nhiều con số( tuỳ chọn chứa một dấu chấm thâp phân), được theo sau bởi một tuỳ chọn số mũ. Số mũ là một ký tự’e’ hoặc ‘E’ đượctheo sau bởi một hoặc nhiều số. Khi biểu thức đầu tiên là một chuối, dạng cảu biến sẽ phụ thuộc vào biểu thức thứ hai. $foo = 1 + "10.5"; // $foo is double (11.5) $foo = 1 + "-1.3e3"; // $foo is double (-1299) $foo = 1 + "bob-1.3e3"; // $foo is integer (1) $foo = 1 + "bob3"; // $foo is integer (1) $foo = 1 + "10 Small Pigs"; // $foo is integer (11) $foo = 1 + "10 Little Piggies"; // $foo is integer (11) $foo = "10.0 pigs " + 1; // $foo is integer (11) $foo = "10.0 pigs " + 1.0; // $foo is double (11) Để có thêm thông tin về sự chuyển đổi này, sem thêm trang Unix manual cho strod(3). Nếu bạn muốn kiểm tra bất kỳ mọt ví dụ nào trong phần này, bạn cố thể cắt và dán các vị dụ và chèn dòng sau để xem điều gì sẽ xảy ra: echo "\$foo==$foo; type is " . gettype ($foo) . " \n"; 4_Các mảng Các mảng thật sự vừa giống các bảng hỗn tạp ( Các mảng có liên kết với nhau) vừa giống các mảng chỉ số( các vector). 4.1_Mảng một chiều PHP hỗ trợ cả mảng vô hướng và mảng có hướng. Trong thực tế, không có gì khác biệt giữa chúng. Ta có thể tạo một mảng sử dụng các hàm list() hoặc array(), hoặc ta có thể thiết lập các giá trị của các phần tử của mảng một cách rõ ràng. $a[0] = "abc"; $a[1] = "def"; $b["foo"] = 13; Ta cũng có thể tạo một mảng bằng cách đơn giản là thêm các giá trị vào mảng. Khi ta gán một giá trị vào một biến mảng dùng dấu ngoặc đơn trống, giá trị sẽ được thêm vào cuối mảng. $a[] = "hello"; // $a[2] == "hello" $a[] = "world"; // $a[3] == "world" Các mảng có thể được sắp xếp bằng cách dùng các hàm asort() , arsort() , ksort() , sort() , uasort() , usort() , và uksort(). Ta có thể đếm số các phần tử trong một mảng bằng cách dùng hàm count(). Ta có thể duyệt qua một mảng bằng cách dùng các hàm next() và prev(). Một cách thông thường khác để duyệt qua các phần tử của mảng là dùng hàm each(). 4.2_Các mảng đa chiều Các mảng nhiều chiều thật sự khá đơn giản. Cho mỗi chiều của mảng, ta có thể thêm giá trị khác[khoá] vào cuối: $a[1] = $f; # one dimensional examples $a["foo"] = $f; 19
  11. $a[1][0] = $f; # two dimensional $a["foo"][2] = $f; # (you can mix numeric and associative indices) $a[3]["bar"] = $f; # (you can mix numeric and associative indices) $a["foo"][4]["bar"][0] = $f; # four dimensional! Trong PHP 3 không cho phép tham chiếu các mảng đa chiều trực tiếp trong các chuỗi. Ví dụ sau đây sẽ không cho kết quả mong muốn: $a[3]['bar'] = 'Bob'; echo "This won't work: $a[3][bar]"; Trong PHP 3, ở trên sẽ cho đầu ra là: This won't work: Array[bar]. Ta có thể làm lại như sau: $a[3]['bar'] = 'Bob'; echo "This will work: " . $a[3][bar]; Tuy nhiên, trong PHP 4, tất cả các vấn đề có thể được dùng mẹo bằng cách đóng tham chiếu mảng( bên trong chuỗi) trong dấu ngoặc nhọn: $a[3]['bar'] = 'Bob'; echo "This will work: {$a[3][bar]}"; Ta có thể điền đầy các mảng đa chiều bằng nhiều cách, nhưng một điều phức tạp để hiểu là bằng cách nào để dùng lệnh array() để cho các mảng kết hợp. Có 2 đoẫnm điền đầy mảng một chiều trong cùng một cách: # Example 1: $a["color"]= "red"; $a["taste"] = "sweet"; $a["shape"] = "round"; $a["name"] = "apple"; $a[3] = 4; # Example 2: $a = array( "color" => "red", "taste" => "sweet", "shape" => "round", "name" => "apple", 3 => 4 ); Hàm array() có thể được lồng vào nhau để cho ra các mảng nhiều chiều: array( "color" => "red", "taste" => "sweet", "shape" => "round" ), "orange" => array( "color" => "orange", "taste" => "tart", "shape" => "round" ), "banana" => array( "color" => "yellow", "taste" => "paste-y", "shape" => "banana-shaped" ) ); 20