Mỗi mảng PHP

Nếu bạn không chỉ định khóa, như trong ví dụ đầu tiên, PHP sẽ chỉ gán các số tăng dần bắt đầu bằng 0. Tuy nhiên, những con số này không thể được đảm bảo tồn tại trong mảng theo bất kỳ thứ tự nhất định nào hoặc thậm chí tồn tại - bản thân chúng chỉ là các giá trị chính. Ví dụ: một mảng có thể có các khóa 0, 1, 2, 5, 3, 6, 7. Đó là, nó có thể có các phím không đúng thứ tự hoặc hoàn toàn bị mất. Do đó, mã như thế này thường nên tránh


Tuy nhiên, có một cách nhanh chóng và dễ dàng để đạt được điều tương tự. một vòng lặp foreach, bản thân nó có hai phiên bản. Cách dễ nhất để sử dụng foreach trông như thế này

foreach[$array as $val] {
    print $val;
}

Ở đây, mảng $array được lặp qua và các giá trị của nó được trích xuất thành $val. Trong tình huống này, các khóa mảng bị bỏ qua hoàn toàn, điều này thường có ý nghĩa nhất khi chúng được tạo tự động [i. e. 0, 1, 2, 3, v.v.]

Cách thứ hai để sử dụng foreach cho phép bạn trích xuất các khóa và trông như thế này

foreach [$array as $key => $val] {
    print "$key = $val\n";
}

Một cách khác thường được sử dụng để lặp qua các mảng là sử dụng các hàm list[] và each[], như thế này


List[] là một hàm ngược lại với array[] - nó lấy một mảng và chuyển đổi nó thành các biến riêng lẻ. Each[] lấy một mảng làm tham số và trả về khóa và giá trị hiện tại trong mảng đó trước khi di chuyển con trỏ mảng. "Con trỏ mảng" là thuật ngữ kỹ thuật cho phần tử của mảng hiện đang được đọc. Tất cả các mảng đều có một con trỏ và bạn có thể tự do di chuyển nó xung quanh - nó được sử dụng trong vòng lặp while ở trên, nơi chúng ta cần lặp qua một mảng. Để bắt đầu, each[] sẽ trả về phần tử đầu tiên, rồi đến phần tử thứ hai, rồi đến phần tử thứ ba, v.v., cho đến khi nó tìm thấy không còn phần tử nào, trong trường hợp đó, nó sẽ trả về false và kết thúc vòng lặp

Ý nghĩa của dòng đầu tiên đó là "lấy phần tử hiện tại trong mảng và gán khóa của nó cho $var và giá trị của nó cho $val, sau đó di chuyển con trỏ mảng. Có nhiều chi tiết hơn về con trỏ mảng sau này

Nói chung, sử dụng vòng lặp foreach là cách tối ưu nhất để lặp qua một mảng và cũng là cách dễ đọc nhất. Tuy nhiên, trong thực tế, bạn sẽ thấy vòng lặp foreach và vòng lặp list[]/each[] có tỷ lệ bằng nhau, mặc dù tùy chọn sau chậm hơn. Sự khác biệt chính giữa hai là foreach tự động bắt đầu ở phía trước của mảng, trong khi list[]/each[] thì không

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

PHP, giống như hầu hết các ngôn ngữ lập trình khác, có nhiều cách để lặp qua các mảng. Các cách phổ biến nhất để làm điều đó thường là với toán tử

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
0,
Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
1 và
Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
2, nhưng, tin hay không thì tùy, có nhiều cách hơn để làm điều đó với PHP. Trong bài viết này, tôi sẽ hướng dẫn từng khả năng đọc mảng trong khi lặp

1. Trong khi lặp lại

Vòng lặp while có lẽ là phổ biến nhất vì cái tên dễ nhận biết và có ý nghĩa. Tôi luôn thích nghĩ về vòng lặp while như sau

Trong khi một cái gì đó là đúng, vòng lặp sẽ tiếp tục lặp hoặc ngược lại

Phương pháp này thường được sử dụng khi làm việc với các kết quả cơ sở dữ liệu theo kiểu mảng nhưng đồng thời, là một cách hoàn toàn khả thi để đọc các mảng kết quả phi cơ sở dữ liệu

Với một mảng đơn giản, chúng ta có thể tạo một giá trị true hoặc false tùy thuộc vào việc mảng có được lặp cho đến hết hay không. Để đạt được điều này, một biến khác phải được tạo ra, một biến chỉ số chỉ số thực hiện hai việc, cho phép chúng ta chọn ra từng giá trị trong mảng cũng như hướng dẫn vòng lặp while dừng khi nào. Nó hơi giống với cách thức hoạt động của vòng lặp

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
1 mà chúng ta sẽ đề cập sau

Mã PHP

________số 8_______

đầu ra

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce

2. cho vòng lặp

Như đã trình bày trong phần trước về vòng lặp

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
0, bạn sẽ thấy vòng lặp
Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
1 giống nhau như thế nào. Nó sử dụng cùng một khái niệm để lặp và chọn thông tin từ mảng. Ba tham số cần thiết cho vòng lặp
Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
1 và chúng như sau –

  1. Bộ đếm ban đầu được đặt thành một giá trị nhất định, thường là 0
  2. Một bài kiểm tra
    Eggs
    Bacon
    HashBrowns
    Beans
    Bread
    RedSauce
    7, thường liên quan đến bộ đếm ban đầu
  3. Một số lượng truy cập tăng ví dụ. quầy ++

Điểm bắt đầu của vòng lặp sẽ luôn trông giống như sau –

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
8

Điều thực sự quan trọng cần lưu ý ở đây là bạn phải sử dụng dấu chấm phẩy sau hai tham số đầu tiên nếu không mã sẽ đưa ra một ngoại lệ. Ngoài ra, không cần tăng bộ đếm trong vòng lặp, vì toán tử

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
1 làm việc này cho bạn. Hãy để vòng lặp này hoạt động trong PHP sau

Mã PHP

        $CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];

        for [$i = 0; $i < count[$CodeWallTutorialArray]; $i++]  {
            echo $CodeWallTutorialArray[$i] ."
"; }

đầu ra

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce

3. vòng lặp foreach

Loại vòng lặp này là cách yêu thích của cá nhân tôi để đọc mảng, không cần kiểm tra

        $CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];

        for [$i = 0; $i < count[$CodeWallTutorialArray]; $i++]  {
            echo $CodeWallTutorialArray[$i] ."
"; }
0, chỉ cần chuyển mảng vào và làm những gì bạn muốn với nó. Nó vừa dễ sử dụng, vừa dễ hiểu và có ích cho nhiều trường hợp sử dụng. Không có quy tắc bắt buộc sử dụng chỉ mục số để chọn ra các giá trị dữ liệu, vòng lặp
Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
2 về cơ bản giải quyết khái niệm này cho bạn. Hãy xem nó hoạt động –

Mã PHP

       $foodArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread"];

        foreach [$foodArray as $food]  {
            echo $food ."
"; }

đầu ra

Eggs
Bacon
HashBrowns
Beans
Bread

Như bạn có thể thấy trong ví dụ về mã, có ít lỗi hơn về mã. Và, nếu bạn đặt tên biến tốt, mã sẽ có ý nghĩa hơn nhiều so với các phương thức lặp khác

4. Vòng lặp Do While

Bạn gần như có thể nói rằng vòng lặp

        $CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];

        for [$i = 0; $i < count[$CodeWallTutorialArray]; $i++]  {
            echo $CodeWallTutorialArray[$i] ."
"; }
2 khá khan hiếm trong mã PHP, cá nhân tôi hiếm khi sử dụng nó và tương tự, hiếm khi thấy nó từ mã của những người khác. Về cơ bản, đây là một cách dài hơn hoặc nhiều mã hơn để thực hiện một vòng lặp while, theo một cách nào đó, khá vô nghĩa. Đồng thời, nó có thể dễ đọc hơn, nhưng cuối cùng, tất cả đều tùy thuộc vào sở thích

Với vòng lặp do while, bạn sẽ cần tạo một phép thử trong toán tử

Eggs
Bacon
HashBrowns
Beans
Bread
RedSauce
0, giống như cách bạn làm trong trường hợp vòng lặp while thuần túy

Mã PHP

       $foodArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread"];
        $i = 0;
        
        do {
            echo $foodArray[$i] . "
"; $i++; } while [$i < count[$foodArray]];

đầu ra

Eggs
Bacon
HashBrowns
Beans
Bread

Như bạn có thể thấy trong mã, cần phải tạo một giá trị chỉ mục gia tăng sẽ hoạt động như một phần kiểm tra và một phần để truy cập các giá trị từ mảng

5. Trình lặp mảng

Bây giờ, đây là một phương pháp vòng lặp nâng cao hơn một chút trên các mảng được gọi là

        $CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];

        for [$i = 0; $i < count[$CodeWallTutorialArray]; $i++]  {
            echo $CodeWallTutorialArray[$i] ."
"; }
4. Nó là một phần của lớp rộng hơn, hiển thị nhiều biến và hàm có thể truy cập. Bạn có nhiều khả năng xem đây là một phần của các lớp PHP và các dự án hướng đối tượng nặng nề. Một lần nữa với chức năng này, bạn có thể thấy thích hợp hơn với những chức năng khác hoặc ngược lại. Tài liệu về
        $CodeWallTutorialArray = ["Eggs", "Bacon", "HashBrowns", "Beans", "Bread", "RedSauce"];

        for [$i = 0; $i < count[$CodeWallTutorialArray]; $i++]  {
            echo $CodeWallTutorialArray[$i] ."
"; }
5 này rất đáng xem vì bạn có thể thấy chính xác những lợi ích mà nó mang lại. Ví dụ: nó ngay lập tức hiển thị số lượng mảng nhanh chóng và hữu ích

Mã PHP

        $programmingLanguagesArray = ["PHP", "C++", "C#", "Python", "Java"];
        
        $arrObject = new ArrayObject[$programmingLanguagesArray];
        $arrayIterator = $arrObject->getIterator[];

        while[ $arrayIterator->valid[] ]
        {
            echo $arrayIterator->current[] . "
"; $arrayIterator->next[]; }

đầu ra

PHP
C++
C#
Python
Java

Chức năng tham khảo

Dưới đây là các liên kết đến tài liệu về từng vòng lặp được sử dụng trong bài viết này. Hãy xem chúng vì chúng cực kỳ nhiều thông tin và hữu ích để đánh dấu trang để tham khảo sau này

  • trong khi
  • cho mỗi
  • làm trong khi
  • MảngIterator

Tóm lược

Với phần minh họa năm cách để lặp qua các mảng, bạn có thể thoải mái chọn một cách ưa thích và thực sự cá nhân để tự làm mọi việc. Trong một số trường hợp, cái này sẽ hoạt động tốt hơn cái kia về những gì bạn cần đạt được. Tôi hy vọng điều này hữu ích, bây giờ hãy làm một số thứ thú vị với một số vòng lặp. Cuối cùng, vui lòng sao chép bất kỳ mã nào trong bài viết này để sử dụng trong các dự án của riêng bạn hoặc chỉ để tham khảo

Chủ Đề