Mick đã đề xuất một giải pháp với ít dòng mã hơn. Tôi muốn giải quyết một số điểm về mã hiện có
điều kiện vô ích
Bên trong khối
array_push[$array,$word];
4 array_push[$array,$word];
5 được gán cho array_push[$array,$word];
6, sau đó nó sẽ kiểm tra xem liệu array_push[$array,$word];
6 [tức là array_push[$array,$word];
5] có nằm trong khoảng array_push[$array,$word];
9 hay không - điều đó sẽ luôn đúngelse{ array_push[$array,$word]; $counter =0; $wordsArray[$word] = $counter; if[in_array[$wordsArray[$word],$wordsArray]] { $wordsArray[$word] +=1; } }
Nó chỉ có thể gán 1 cho
array_push[$array,$word];
6Đẩy mảng đơn giản hơn
Trong khối mã nói trên,
$array[] = $word;
1 được đẩy vào $array[] = $word;
2array_push[$array,$word];
Khi thêm một phần tử vào một mảng, có thể đạt được điều tương tự bằng cách gán khóa có sẵn tiếp theo []
________số 8_______Toán tử tăng sau
Ngoài ra, trong cả hai khối
$array[] = $word;
3 và array_push[$array,$word];
4 đều có các dòng để thêm một vào số đếm$wordsArray[$word] +=1;
Chúng có thể được đơn giản hóa bằng cách sử dụng toán tử tăng sau
$array[] = $word;
5$wordsArray[$word]++;
Tên biến
Những cái tên như
$array[] = $word;
2 không mô tả được những gì chúng chứa. Một cái tên hay hơn có thể là $array[] = $word;
7Tên chức năng
Nhiều lập trình viên PHP tuân theo các tiêu chuẩn được nêu trong Khuyến nghị về Tiêu chuẩn PHP như PSR-1 và PSR-12. trạng thái PSR-1
Tên phương thức PHẢI được khai báo trong
8$array[] = $word;
Điều đó cũng nên áp dụng cho tên hàm. Vì vậy, mã PHP thành ngữ sẽ sử dụng tên như
$array[] = $word;
9 thay vì $wordsArray[$word] +=1;
0khoảng cách
PSR-12 cũng mô tả khoảng cách trong các phần khác nhau. Ví dụ, xem
Khi thực hiện lời gọi phương thức hoặc hàm, KHÔNG ĐƯỢC có khoảng trắng giữa tên phương thức hoặc hàm và dấu ngoặc đơn mở, KHÔNG ĐƯỢC có khoảng trắng sau dấu ngoặc đơn mở và KHÔNG ĐƯỢC có khoảng trắng trước dấu ngoặc đơn đóng. Trong danh sách đối số, KHÔNG ĐƯỢC có khoảng trắng trước mỗi dấu phẩy và PHẢI có một khoảng trắng sau mỗi dấu phẩy
Và cũng
Các quy tắc kiểu chung cho các cấu trúc điều khiển như sau
- PHẢI có một khoảng trắng sau từ khóa cấu trúc điều khiển
- KHÔNG ĐƯỢC có khoảng trắng sau dấu ngoặc đơn mở
- KHÔNG ĐƯỢC có khoảng trắng trước dấu ngoặc đơn đóng
- PHẢI có một khoảng cách giữa dấu ngoặc đơn đóng và dấu ngoặc mở
- Thân cấu trúc PHẢI được thụt lề một lần
Vì vậy, nên có một khoảng trắng sau một
$wordsArray[$word] +=1;
1foreach[$textsplit as $word]{
Nên là
foreach [$textsplit as $word] {
Và tương tự cho
$array[] = $word;
3 - likeif[in_array[$wordsArray[$word],$wordsArray]] {
Nên là
if [in_array[$wordsArray[$word], $wordsArray]] {
Cũng
Tất cả các toán tử số học nhị phân, so sánh, gán, bitwise, logic, chuỗi và loại PHẢI được đặt trước và theo sau bởi ít nhất một khoảng trắng
Vì vậy, thay vì điều này trong khối
array_push[$array,$word];
4$counter =0;
Thêm khoảng trắng sau
$wordsArray[$word] +=1;
4array_push[$array,$word];
0Và như đã đề cập trước đó, biến đó chỉ được sử dụng một lần sau khi nó được sử dụng nên có thể loại bỏ nó
Tách chuỗi bằng biểu thức chính quy
Bạn có thể sử dụng các biểu thức chính quy nhưng vì nó chỉ được tách trên một khoảng trắng nên có thể thực hiện nhanh hơn bằng cách sử dụng _____14_______5 - e. g
1array_push[$array,$word];
có thể đơn giản
array_push[$array,$word];
2xử lý ngoại lệ
Mã lặp lại ngoại lệ
3array_push[$array,$word];
Lưu ý rằng đây đang gọi phương thức
$wordsArray[$word] +=1;
6, phương thức này có thể hiển thị nhiều chi tiết hơn mong muốn - e. g. tệp, dòng, dấu vết ngăn xếp, v.v. Có thể thích hợp để gọi phương thức $wordsArray[$word] +=1;
7 hoặc không hiển thị bất kỳ chi tiết nào cho người dùng và thay vào đó hiển thị một thông báo chung chung hơn