Thao tac mang trong php
Monday, 19. October 2009, 03:35:55
"; } Kết quả: Tires - 100 Oil - 10 Spark Plugs - 4 Hàm each() trả về phần tử hiện hành trong mảng và làm cho phần tử tiếp theo là phần tử hiện hành. Vì chúng ta đang gọi hàm each() trong vòng lặp while, nó sẽ trả về mọi phần tử trong mảng quay vòng và dừng lại khi kết thúc mảng. Trong đoạn mã này, $element là một mảng. Khi chúng ta gọi hàm each(), nó cho chúng ta một mảng 3 giá trị và 3 chỉ số chỉ tới các vị trí mảng. Vị trí "key" và "0" chứa key của phần tử hiện hành, vị trí "value" và "1" chứa value của phần tử hiện hành. Nhưng chúng ta thường hay sử dụng tên vị trí, hơn là dùng các number. Có một cách hay hơn để làm việc đó. Hàm list() có thể được sử dụng để chia một mảng thành một số giá trị. Chúng ta có thể chia hai giá trị mà hàm each() đưa ra như sau: list($product,$price) = each($prices); Lệnh trên sử dụng each() để lấy phần tử hiện hành từ $prices, trả về mảng và làm phần tử sau thành phần tử hiện hành. Sử dụng list() để đưa các phần tử 0 và 1 từ mảng trả về bởi each() vào các biến mới là $product và $price. Chúng ta có thể lặp qua mảng $price, đưa ra nội dung như sau: while( list( $product, $price) = each( $prices)) echo "$product - $price
"; Một điều chú ý khi sử dụng each() là nếu chúng ta muốn sử dụng mảng hai lần trong cùng một script, chúng ta cần đặt phần tử hiện hành trở lại đầu của mảng sử dụng hàm reset(). Do khi kết thúc each() sẽ trỏ đến phần tử cuối cùng của mảng. Để lặp lại mảng $prices, làm như sau: reset($prices); while( list($product,$price)=each($prices)) echo "$product - $price
"; IV. Mảng nhiều chiều Các mảng không chỉ đơn giản là danh sách các key và value - mỗi vị trí trong mảng có thể lưu giữ mảng khác. Bằng cách này chúng ta có thể tạo mảng 2 chiều. Nếu chúng ta muốn lưu trữ nhiều hơn một piece dữ liệu về mỗi sản phẩm , chúng ta có thể sử dụng mảng hai chiều. Ví dụ sau mô tả các sản phẩm như là các mảng 2 chiều với mỗi hàng mô tả một sản phẩm riêng và mỗi cột mô tả một thuộc tính sản phẩm. Code Description Price TIR Tires 100 OIL Oil 10 SPK Spark Plugs 4 Sử dụng PHP, chúng ta sẽ viết mã sau để cài dữ liệu vào mảng đó: $products = array( array("TIR","Tires",100), array("OIL","Oil",10), array("SPK","Spark Plugs",4) ); Để truy nhập dữ liệu trong mảng hai chiều tương tự mảng một chiều, chỉ khác là mỗi phần tử của mảng có hai chỉ số - hàng và cột. Để hiển thị nội dung của mảng này, chúng ta truy nhập mỗi phần tử theo thứ tự như sau: echo "|".$products[0][0]."|".$products[0][1]."|".$products[0][2]."|
"; echo "|".$products[1][0]."|".$products[1][1]."|".$products[1][2]."|
"; echo "|".$products[2][0]."|".$products[2][1]."|".$products[2][2]."|
"; Cách khác chúng ta có thể dùng for để nhận cùng kết quả: for($row=0;$row<3;$row++) { for($column=0;$column<3;$column++) { echo "|".$products[$row][$column]; } echo "|
"; } Kết quả: |TIR|Tires|100| |OIL|Oil|10| |SPK|Spark Plugs|4| Có thể bạn thích tạo các tên cột hơn là dùng các số. Để làm việc này, bạn có thể sử dụng các mảng kết hợp. Để lưu trữ cùng bộ products, với các cột có tên, bạn sẽ dùng mã sau: $products = array(array"Code"=>"TIR","Description"=>"Tires","Price"=>100), array("Code"=>"OIL","Description"=>"Oil","Price"=>10), array("Code"=>"SPK","Description"=>"Spark Plugs","Price"=>4) ); Mảng này dễ dàng làm việc với, nếu bạn muốn nhận một giá trị đơn. Sự mô tả được chứa trong cột Description dễ nhớ hơn là nhớ nó được chứa trong cột 1. Sử dụng các mảng kết hợp bạn không cần phải nhớ một mục được chứa tại [x] [y]. Bạn có thể dễ dàng tìm dữ liệu của bạn bằng cách tham chiếu tới vị trí với tên hàng và cột có ý nghĩa hơn. Đây là một cách để hiển thị nội dung mảng: for($row=0;$row<3;$row++) { echo "|".$products[$row]["Code"]."|".$products[$row] ["Description"]. "|".$products[$row] ["Price"]."|
"; } Dùng for, chúng ta có thể duyệt mảng $products chỉ số. Mỗi hàng trong mảng $products bây giờ là một mảng kết hợp. Sử dụng each() và list() trong vòng lặp while, chúng ta có thể duyệt qua các phần tử mảng. Vì vậy phải dùng while bên trong for: for($row=0;$row<3;$row++) { while(list($key,$value)=each($products[$row])) { echo "|$value"; } echo "|
"; }











