Danh mục

PHP Tutorial chương 2 p11

Số trang: 6      Loại file: pdf      Dung lượng: 142.98 KB      Lượt xem: 16      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Làm việc với mảng (Array) trong PHP (tiếp) Sắp xếp mảng Do PHP lưu trữ các phần tử trong mảng theo thứ tự chúng được đưa vào mảng, chính vì vậy đôi lúc sẽ nảy sinh nhu cầu sắp xếp các phần từ trong mảng. Để sắp xếp ta có thể dùng các hàm có sẵn của PHP, tiêu biểu là hàm sort PHP Code: "; sort($arr)
Nội dung trích xuất từ tài liệu:
PHP Tutorial chương 2 p11Làm việc với mảng (Array) trong PHP (tiếp)Sắp xếp mảngDo PHP lưu trữ các phần tử trong mảng theo thứ tự chúng được đưa vào mảng, chính vìvậy đôi lúc sẽ nảy sinh nhu cầu sắp xếp các phần từ trong mảng. Để sắp xếp ta có thểdùng các hàm có sẵn của PHP, tiêu biểu là hàm sortPHP Code: Kết quả thu được sẽ là:Quote:array(6) { [0]=> int(5) [1]=> int(3) [2]=> int(6) [3]=> int(4) [4]=> int(2) [5]=> int(1) }array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) }Các bạn có thể thấy là các giá trị đã được sắp xếp tăng dần tuy nhiên các key cũng đã bịthay đổi. Để dữ nguyên các key ban đầu, ta sử dụng hàm asort. Thay thế hàm sort trongví dụ bằng asort thì sẽ thu được kết quả như sau:Quote:array(6) { [0]=> int(5) [1]=> int(3) [2]=> int(6) [3]=> int(4) [4]=> int(2) [5]=> int(1) }array(6) { [5]=> int(1) [4]=> int(2) [1]=> int(3) [3]=> int(4) [0]=> int(5) [2]=> int(6) }Các hàm này cũng sẽ làm việc tốt đẹp với các xâu kí tự, tuy nhiên với 1 mảng có các giátrị report1.pdf, report5.pdf, report10.pdf, and report15.pdf thì kết quả thu đượcsẽ là:Quote:report1.pdf, report10.pdf, report15.pdf, report5.pdfĐơn giản là vì mã ASCII của 1 nhỏ hơn 5 nên kết quả sẽ ra như vậy. Để giải quyếtvấn đề này, thay vì sort và asort ta sử dụng natsort hoặc natcasesort. Kết quả thu được sẽlà:Quote:report1.pdf, report5.pdf, report10.pdf, report15.pdfSắp xếp mảng nâng caoGiả sử bạn có mảng nhiều chiều sau:PHP Code: Khi muốn sắp xếp mảng $bikes theo price của mỗi phần tử thì làm thế nào? Không thểdùng các hàm ở trên được! Vậy giải pháp duy nhất là ta sẽ phải tự sắp xếpPHP Code: echo Bike {$bike[name]} costs ${$bike[price]} ; } ?>Trong ví dụ trên, mấu chốt chính là ở hàm uasort, hàm này sẽ so sánh từng giá trị trongmảng với nhau bằng hàm so sánh compare_price. Hàm này sẽ so sánh 2 giá trị được đưavào là $in_bike1 và $in_bike2 rồi trả lại 1 trong 3 giá trị: 1, 0 hoặc (-1) khi so sánh pricecủa $in_bike1 và $in_bike2. Sau cùng ta sẽ thu được kết quả:Quote:Bike Off-Roadster costs $4295Bike Slasher XYZ 1000 costs $11450Bike Grande Tour Meister costs $12999Sắp xếp ngược lạiTrong các phần trên ta đều thấy sắp xếp tăng dần, vậy để sắp xếp giảm dần thì làm thếnào? Ta có thể sử dụng rsort và arsort thay thế cho sort và asort. Chú ý là không cóursort! Để sắp xếp ngược lại bạn chỉ cần đảo ngược thứ tự trong hàm so sánh của mìnhSắp xếp theo keyĐể sắp xếp theo key, ta có các hàm ksort, krsort, và uksort. Sắp xếp theo key sẽ luôn giữnguyên các key vì vậy không có kasort. Các giá trị đi kèm mỗi key cũng sẽ được giữnguyênCác hàm khácarray_mergeHàm này sẽ nhận vào 2 mảng và trả lại 1 mảng trong đó bao gồm tất cả các giá trị của 2mảng ban đầu. Các key sẽ được giữ nguyên trừ trường hợp: 1. 2 mảng có 1 key là xâu kí tự giống nhau, thì giá trị của mảng thứ nhất sẽ bị ghi đè bằng giá trị của key đó ở mảng thứ hai 2. Ở mảng thứ hai nếu trùng các key là số nguyên với mảng thứ nhất, thì các giá trị của mảng thứ hai sẽ nhận 1 key mới (không ghi đè)Xét ví dụ:PHP Code: $newar = array_merge($ar1, $ar2); print_r($newar); ?>Kết quả thu được sẽ là:Quote:Array ([name] => Zimbu[0] => 10[1] => 100[2] => 2[3] => 3[4] => 4)array_combineHàm này nhận vào 2 mảng rồi trả lại 1 mảng, trong đó các key là các giá trị của mảng thứnhất, các giá trị là từ mảng thứ hai. Nếu 2 mảng không có cùng số phần tử sẽ báo lỗi. Xétví dụ sau:PHP Code: Hàm này nhận vào 2 mảng rồi trả lại các phần tử cùn có ở 2 m y i ng mảng. Các k sẽ được giữ keynguyên, nếu cùng 1 giá trị mà lại có 2 key khác nhau thì key ở m y u mảng thứ n sẽ được sử nhất cdụng. Xét ví dụ sau u:PHP Code: đoán trước rồi hãy đọc xem có đú kô nhéKết quả thu được (đ c úng )Quote:Array ([name] = Zeke =>[0] => 10) earcharray_seCái tên n lên tất cả ^o^ Khi b cần tìm 1 giá trị trong mảng t sử dụng hàm này. C nói c bạn m thì Cấutrúc rất đ giản: đơnPHP Code: Và đây l kết quả: làQuote:int(2)bool(fals se)Sau khi nắm hết các hàm này t làm việc với mảng bạn sẽ thấy rất dễ dàn thoải mái c thì c y ng iEnjoy >

Tài liệu được xem nhiều: