PHP ghi mảng vào tệp theo từng dòng

Bạn có thể đã nghe nói về
0 và
1 kể từ ngày đầu tiên học PHP – Đúng vậy, chúng thực sự có thể được sử dụng cho bất kỳ loại tệp nào

Bạn có thể sử dụng hàm


38 trong PHP để đọc toàn bộ tệp cùng lúc vào một mảng. Các phần tử mảng là các dòng riêng lẻ của tệp. Vì vậy, bạn sẽ có thể lặp qua các dòng trong tệp bằng cách lặp qua mảng. Hàm chấp nhận ba tham số

  • tên tập tin. Đây là tập tin mà bạn muốn đọc. Bạn cũng có thể cung cấp URL làm tên tệp
  • cờ. Đây là một tham số tùy chọn và có thể được đặt thành một hoặc nhiều giá trị hằng số sau.
    
    
    40,
    
    
    41 và
    
    
    42
  • bối cảnh. Đây cũng là một tham số tùy chọn được sử dụng để sửa đổi hành vi của luồng

Chúng tôi sẽ sử dụng cờ


42 để bỏ qua tất cả các dòng trống trong một tệp. Bạn cũng có thể muốn sử dụng

41 để xóa phần cuối dòng khỏi các dòng riêng lẻ

Hàm này trả về một mảng có nội dung tệp khi thành công và


45 khi thất bại. Bạn cũng sẽ gặp lỗi cấp độ

46 nếu tệp không tồn tại. Dưới đây là một ví dụ về việc sử dụng chức năng này

0_______2
2
3
4
5
6
7
8
9

0

1

2

3

4

5

6

7

8

Đầu ra của đoạn mã trên trông như thế này

_______10_______120

2
22
3
24
5
26
7
28
8
30

0
32

2
34

4
36

6
38

7
40
41
42
43
44
45_______145_____145_____145_____145

Bạn có thể thấy rằng có một số dòng trống trong đầu ra; . Ngoài ra, nó có thể không rõ ràng, nhưng các dòng trên bao gồm ký tự xuống dòng. Đó là lý do tại sao chúng ta không phải thêm một ký tự dòng mới của riêng mình khi lặp lại các dòng. Bạn có thể loại bỏ các dòng trống bằng cách sử dụng cờ


41

0__

2
3
55
5
6
7
8
9

0

1

2

3

4

5

6

7

8

Đầu ra với những lá cờ đó sẽ trông như thế này

0____171

Sử dụng hàm


38 là một cách dễ dàng để đọc từng dòng tệp trong PHP nếu bạn không lo lắng về việc sử dụng bộ nhớ. Tuy nhiên, bạn sẽ phải sáng tạo hơn nếu việc sử dụng bộ nhớ là một vấn đề vì

38 đọc toàn bộ tệp vào một mảng cùng một lúc

Sử dụng

Một cách khác để đọc từng dòng tệp bằng PHP là sử dụng hàm


51. Nó có một tham số bắt buộc, đó là một tệp xử lý hợp lệ. Chúng tôi sẽ sử dụng chức năng

53 để có quyền truy cập vào phần xử lý tệp. Đây là mã mà chúng ta sẽ chạy

0

2
3
76
5
7
79
8__

Ở dòng đầu tiên, chúng tôi mở tệp của mình ở chế độ chỉ đọc. Sau đó, chúng ta định nghĩa một hàm chấp nhận một tham số là


54 và trả về một dòng duy nhất. Xin lưu ý rằng chúng tôi đang sử dụng câu lệnh

55 và hàm

56 của chúng tôi là hàm tạo. Bạn có thể muốn đọc về các hàm tạo trong PHP nếu bạn chưa từng sử dụng chúng trước đây

  • PHP ghi mảng vào tệp theo từng dòng
    PHP ghi mảng vào tệp theo từng dòng
    PHP ghi mảng vào tệp theo từng dòng

    Cách sử dụng Yield và Generators trong PHP

    PHP ghi mảng vào tệp theo từng dòng
    PHP ghi mảng vào tệp theo từng dòng
    PHP ghi mảng vào tệp theo từng dòng

    Monty Shokeen

    26 Thg 12 2021

Chúng tôi đang sử dụng hàm


57 bên trong

56 để kiểm tra xem con trỏ tệp của chúng tôi đã đến cuối tệp chưa. Chúng tôi chỉ mang lại miễn là chúng tôi không ở cuối tệp. Bạn sẽ nhận được đầu ra sau bằng cách chạy đoạn mã trên

0__

07
2

09
3

11
5

13
7

15
8

17

0

19

2

21

4

23

6
38

7
40
41
42
43
44
45_____145145_____145_____145_____145

Đầu ra trông giống như trong phần trước của chúng tôi. Sự khác biệt duy nhất lần này là bạn không còn nguy cơ hết bộ nhớ nữa

Tôi đã đề cập trước đó rằng


51 sẽ cho phép bạn đọc từng dòng của tệp và nó chỉ yêu cầu một tham số duy nhất trỏ tới con trỏ tệp cho tệp mà bạn muốn đọc. Mức tiêu thụ bộ nhớ trong trường hợp này sẽ phụ thuộc vào độ dài của dòng và có rất ít khả năng bạn hết bộ nhớ

Tuy nhiên, giả sử bạn đang đọc một tệp văn bản chứa các dòng dài bất thường. Sau đó, bạn có thể chuyển tham số thứ hai tùy chọn cho hàm


51 chỉ định số lượng ký tự mà bạn muốn đọc. Sau đó, nó sẽ đọc

61 byte từ tệp trước khi dừng. Nó sẽ dừng sớm hơn nếu nó đến một dòng mới hoặc cuối tệp. Điều này cho phép bạn kiểm soát nhiều hơn đối với mức tiêu thụ bộ nhớ của mã của bạn

Suy nghĩ cuối cùng

Tôi đã thảo luận về hai phương pháp đọc từng dòng tệp bằng PHP trong hướng dẫn này. Có một vài cách khác để làm điều này, nhưng hai cách này sẽ đáp ứng hầu hết mọi nhu cầu của bạn. Sử dụng hàm


38 khi mức tiêu thụ bộ nhớ không phải là vấn đề và sử dụng

51 với hàm tạo nếu bạn muốn tiết kiệm bộ nhớ

Làm cách nào để viết một mảng vào một tệp PHP?

Để chuyển đổi một mảng thành tệp CSV, chúng ta có thể sử dụng hàm fputcsv() . Hàm fputcsv() được sử dụng để định dạng một dòng dưới dạng tệp CSV (các giá trị được phân tách bằng dấu phẩy) và ghi nó vào một tệp đang mở.

Làm cách nào để đọc một tệp thành một mảng có tệp trong PHP?

Tệp() đọc một tệp thành một mảng. Mỗi phần tử mảng chứa một dòng từ tệp, với ký tự xuống dòng vẫn được đính kèm.

Làm cách nào để chuyển đổi một mảng thành một chuỗi trong PHP?

Trong PHP, hàm implode() là một hàm tích hợp, nhận một mảng và chuyển đổi nó thành một chuỗi. implode() không sửa đổi mảng ban đầu. Không quan trọng mảng là mảng được lập chỉ mục hay mảng kết hợp. Khi bạn chuyển mảng sang implode() , nó sẽ nối tất cả các giá trị thành một chuỗi.

Mã nào đọc toàn bộ nội dung của một tệp theo từng dòng vào một mảng?