Php lấy tất cả các khóa bài
Trong ví dụ này, bạn sẽ học php lấy tất cả các khóa của mảng bắt đầu bằng một chuỗi nhất định. đó là ví dụ đơn giản về bộ lọc mảng php chỉ một số khóa nhất định. chúng tôi sẽ giúp bạn đưa ra ví dụ về việc lấy giá trị tất cả các khóa bắt đầu bằng mảng php chuỗi nhất định. đó là ví dụ đơn giản về mảng php array_filter. Hãy xem ví dụ dưới đây mảng php lấy tất cả các khóa bắt đầu bằng một chuỗi nhất định Show
tôi sẽ cho bạn hai ví dụ ở đây chúng ta hãy xem từng người một ví dụ 1
đầu ra
ví dụ 2
đầu ra
Tôi hy vọng nó có thể giúp bạn PHP làm cho việc xây dựng một hệ thống dựa trên web trở nên tương đối dễ dàng, đó là lý do khiến nó trở nên phổ biến. Nhưng mặc dù dễ sử dụng, PHP đã phát triển thành một ngôn ngữ khá phức tạp, với nhiều sắc thái và sự tinh tế có thể khiến các nhà phát triển khó chịu, dẫn đến hàng giờ gỡ lỗi khó hiểu. Bài viết này nhấn mạnh 10 lỗi phổ biến hơn mà các nhà phát triển PHP cần lưu ý Qua Ilya Sanosian Ilya là nhà tư vấn CNTT, kiến trúc web và quản lý với hơn 12 năm kinh nghiệm xây dựng và lãnh đạo các nhóm CHIA SẺ CHIA SẺ PHP làm cho việc xây dựng một hệ thống dựa trên web trở nên tương đối dễ dàng, đó là lý do khiến nó trở nên phổ biến. Nhưng mặc dù dễ sử dụng, PHP đã phát triển thành một ngôn ngữ khá phức tạp với nhiều khuôn khổ, sắc thái và sự tinh tế có thể khiến các nhà phát triển khó chịu, dẫn đến hàng giờ gỡ lỗi khó hiểu. Bài viết này nhấn mạnh 10 lỗi phổ biến hơn mà các nhà phát triển PHP cần lưu ý Sai lầm thường gặp #1. Để lại các tham chiếu mảng lơ lửng sau vòng lặp $data = fetchRecordFromStorage($storage, $identifier); if (!isset($data['keyShouldBeSet']) { // do something here if 'keyShouldBeSet' is not set } 5Bạn không chắc cách sử dụng vòng lặp foreach trong PHP? . Ví dụ
Vấn đề là, nếu bạn không cẩn thận, điều này cũng có thể gây ra một số tác dụng phụ và hậu quả không mong muốn. Cụ thể, trong ví dụ trên, sau khi mã được thực thi, 7 sẽ vẫn nằm trong phạm vi và sẽ giữ tham chiếu đến phần tử cuối cùng trong mảng. Do đó, các hoạt động tiếp theo liên quan đến 7 có thể vô tình sửa đổi phần tử cuối cùng trong mảngĐiều chính cần nhớ là 5 không tạo phạm vi. Do đó, 7 trong ví dụ trên là một tham chiếu trong phạm vi trên cùng của tập lệnh. Trên mỗi lần lặp lại, 5 đặt tham chiếu để trỏ đến phần tử tiếp theo của 22. Do đó, sau khi vòng lặp hoàn thành, 7 vẫn trỏ đến phần tử cuối cùng của 22 và vẫn nằm trong phạm vi Đây là một ví dụ về loại lỗi lảng tránh và khó hiểu mà điều này có thể dẫn đến 5 Đoạn mã trên sẽ xuất ra như sau 6 Không, đó không phải là một lỗi đánh máy. Giá trị cuối cùng trên dòng cuối cùng thực sự là 2, không phải 3 Tại sao? Sau khi đi qua vòng lặp 5 đầu tiên, 22 vẫn không thay đổi nhưng, như đã giải thích ở trên, 7 được để lại như một tham chiếu lơ lửng đến phần tử cuối cùng trong 22 (vì vòng lặp 5 đó được truy cập 7 bằng tham chiếu)Kết quả là, khi chúng ta đi qua vòng lặp 5 thứ hai, "điều kỳ lạ" dường như xảy ra. Cụ thể, vì 7 hiện đang được truy cập theo giá trị (i. e. , bằng bản sao), 5 sao chép từng phần tử 22 tuần tự vào 7 trong mỗi bước của vòng lặp. Kết quả là, đây là những gì xảy ra trong mỗi bước của vòng lặp 5 thứ hai
Để vẫn nhận được lợi ích của việc sử dụng các tham chiếu trong vòng lặp 5 mà không gặp rủi ro về các loại sự cố này, hãy gọi 53 trên biến, ngay sau vòng lặp 5, để xóa tham chiếu; . g 7Sai lầm thường gặp #2. Hiểu lầm hành vi $data = fetchRecordFromStorage($storage, $identifier); if (!isset($data['keyShouldBeSet']) { // do something here if 'keyShouldBeSet' is not set } 55Mặc dù tên của nó, nhưng 55 không chỉ trả về false nếu một mục không tồn tại mà còn trả về 57 cho các giá trị 58Hành vi này có nhiều vấn đề hơn so với lúc đầu và là nguyên nhân phổ biến của các vấn đề Hãy xem xét những điều sau đây
Tác giả của mã này có lẽ muốn kiểm tra xem 59 có được đặt trong 40 không. Tuy nhiên, như đã thảo luận, 41 cũng sẽ trả về false nếu 42 được đặt, nhưng được đặt thành 58. Vì vậy, logic trên là thiếu sótĐây là một ví dụ khác 2 Đoạn mã trên giả định rằng nếu 44 trả về 45, thì 46 nhất thiết phải được đặt và do đó, 47 sẽ trả về 45. Vì vậy, ngược lại, đoạn mã trên giả định rằng cách duy nhất mà 47 sẽ trả về 57 là nếu 44 cũng trả lại 57Không Như đã giải thích, 47 cũng sẽ trả về 57 nếu 505 được đặt thành 58. Do đó, có thể cho 47 trả lại 57 ngay cả khi 44 trả lại 45. Vì vậy, một lần nữa, logic trên là thiếu sótVà nhân tiện, như một điểm phụ, nếu mục đích trong đoạn mã trên thực sự là kiểm tra lại xem 44 có trả về đúng hay không, thì dựa vào 55 vì đây là một quyết định viết mã kém trong mọi trường hợp. Thay vào đó, sẽ tốt hơn nếu chỉ kiểm tra lại 44; . e9 Tuy nhiên, đối với các trường hợp, điều quan trọng là phải kiểm tra xem một biến có thực sự được đặt hay không (i. e. , để phân biệt giữa một biến không được đặt và một biến được đặt thành 58), phương pháp 515 là một giải pháp hiệu quả hơn nhiều Ví dụ: chúng ta có thể viết lại ví dụ đầu tiên trong hai ví dụ trên như sau 4 Hơn nữa, bằng cách kết hợp 515 với 517, chúng tôi có thể kiểm tra một cách đáng tin cậy liệu một biến trong phạm vi hiện tại đã được đặt hay chưa 5Sai lầm thường gặp #3. Nhầm lẫn về việc trả lại theo tham chiếu so với. theo giá trịHãy xem xét đoạn mã này 4Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được như sau 50 Chuyện gì vậy? Vấn đề là đoạn mã trên nhầm lẫn việc trả về mảng theo tham chiếu với việc trả về mảng theo giá trị. Trừ khi bạn yêu cầu PHP trả về một mảng theo tham chiếu (i. e. , bằng cách sử dụng 518), theo mặc định, PHP sẽ trả về mảng “theo giá trị”. Điều này có nghĩa là một bản sao của mảng sẽ được trả về và do đó, hàm được gọi và người gọi sẽ không truy cập cùng một thể hiện của mảng Vì vậy, lệnh gọi 519 ở trên trả về một bản sao của mảng 520 chứ không phải là một tham chiếu đến nó. Với ý nghĩ đó, chúng ta hãy xem lại hai dòng chính từ ví dụ trên 51 Một cách khắc phục có thể là lưu bản sao đầu tiên của mảng 520 được trả về bởi 519 và sau đó thao tác trên bản sao đó; . g 52 Mã đó sẽ hoạt động tốt (tôi. e. , nó sẽ xuất ra 523 mà không tạo bất kỳ thông báo "chỉ mục không xác định" nào), nhưng tùy thuộc vào những gì bạn đang cố gắng hoàn thành, cách tiếp cận này có thể phù hợp hoặc không. Cụ thể, đoạn mã trên sẽ không sửa đổi mảng 520 ban đầu. Vì vậy, nếu bạn muốn các sửa đổi của mình (chẳng hạn như thêm phần tử 'kiểm tra') ảnh hưởng đến mảng ban đầu, thay vào đó, bạn cần sửa đổi hàm 519 để trả về một tham chiếu đến chính mảng 520. Điều này được thực hiện bằng cách thêm một 518 trước tên hàm, do đó chỉ ra rằng nó sẽ trả về một tham chiếu; . e 53 Đầu ra của điều này sẽ là 523, như mong đợi Nhưng để làm cho mọi thứ trở nên khó hiểu hơn, thay vào đó hãy xem xét đoạn mã sau 54 Nếu bạn đoán rằng điều này sẽ dẫn đến lỗi “chỉ mục không xác định” giống như ví dụ về 529 trước đó của chúng tôi, thì bạn đã nhầm. Trên thực tế, mã này sẽ hoạt động tốt. Lý do là, không giống như mảng, PHP luôn chuyển các đối tượng theo tham chiếu. ( 530 là một đối tượng SPL, bắt chước hoàn toàn cách sử dụng mảng, nhưng hoạt động như một đối tượng. ) Như những ví dụ này chứng minh, không phải lúc nào PHP cũng hoàn toàn rõ ràng cho dù bạn đang xử lý một bản sao hay một tài liệu tham khảo. Do đó, điều cần thiết là phải hiểu những hành vi mặc định này (i. e. , biến và mảng được truyền theo giá trị; Tất cả những gì đã nói, điều quan trọng cần lưu ý là việc trả về một tham chiếu đến một mảng hoặc một 530 nói chung là điều nên tránh, vì nó cung cấp cho người gọi khả năng sửa đổi dữ liệu riêng tư của cá thể. Điều này “bay vào mặt” của sự đóng gói. Thay vào đó, tốt hơn là sử dụng "getters" và "setters" kiểu cũ, e. g 55 Cách tiếp cận này cung cấp cho người gọi khả năng đặt hoặc nhận bất kỳ giá trị nào trong mảng mà không cung cấp quyền truy cập công khai vào chính mảng 520 riêng tư Sai lầm thường gặp #4. Thực hiện các truy vấn trong một vòng lặpKhông có gì lạ khi gặp phải trường hợp như thế này nếu PHP của bạn không hoạt động 56 Mặc dù có thể hoàn toàn không có gì sai ở đây, nhưng nếu bạn làm theo logic trong mã, bạn có thể thấy rằng lệnh gọi có vẻ vô hại ở trên tới 533 cuối cùng dẫn đến một loại truy vấn nào đó, chẳng hạn như 57 Do đó, mỗi lần lặp lại của vòng lặp trên sẽ dẫn đến một truy vấn riêng tới cơ sở dữ liệu. Vì vậy, ví dụ: nếu bạn đã cung cấp một mảng gồm 1.000 giá trị cho vòng lặp, thì nó sẽ tạo ra 1.000 truy vấn riêng biệt cho tài nguyên. Nếu một tập lệnh như vậy được gọi trong nhiều luồng, thì nó có khả năng khiến hệ thống ngừng hoạt động Do đó, điều quan trọng là phải nhận biết khi nào mã của bạn tạo truy vấn và bất cứ khi nào có thể, hãy thu thập các giá trị rồi chạy một truy vấn để tìm nạp tất cả kết quả Một ví dụ về một nơi khá phổ biến để gặp truy vấn được thực hiện không hiệu quả (i. e. , trong một vòng lặp) là khi một biểu mẫu được đăng với một danh sách các giá trị (ví dụ: ID). Sau đó, để truy xuất toàn bộ dữ liệu bản ghi cho từng ID, mã sẽ lặp qua mảng và thực hiện một truy vấn SQL riêng cho từng ID. Điều này thường sẽ trông giống như thế này 58 Nhưng điều tương tự có thể được thực hiện hiệu quả hơn nhiều trong một truy vấn SQL như sau 59 Do đó, điều quan trọng là phải nhận biết khi nào các truy vấn được thực hiện, trực tiếp hoặc gián tiếp, bằng mã của bạn. Bất cứ khi nào có thể, hãy thu thập các giá trị rồi chạy một truy vấn để tìm nạp tất cả các kết quả. Tuy nhiên, cũng cần phải thận trọng, điều này dẫn chúng ta đến lỗi PHP phổ biến tiếp theo… Sai lầm thường gặp #5. Sử dụng bộ nhớ giả mạo và không hiệu quảMặc dù tìm nạp nhiều bản ghi cùng một lúc chắc chắn hiệu quả hơn chạy một truy vấn duy nhất cho mỗi hàng để tìm nạp, nhưng cách tiếp cận như vậy có khả năng dẫn đến tình trạng “hết bộ nhớ” trong 534 khi sử dụng tiện ích mở rộng 535 của PHP Để chứng minh, chúng ta hãy xem một hộp thử nghiệm với tài nguyên hạn chế (RAM 512MB), MySQL và 536 Chúng tôi sẽ khởi động một bảng cơ sở dữ liệu như thế này 60 OK, bây giờ hãy kiểm tra việc sử dụng tài nguyên 61 đầu ra 62 Mát mẻ. Có vẻ như truy vấn được quản lý nội bộ an toàn về mặt tài nguyên Tuy nhiên, để chắc chắn, hãy tăng giới hạn một lần nữa và đặt nó thành 100.000. Uh-oh. Khi chúng tôi làm điều đó, chúng tôi nhận được 63 Chuyện gì đã xảy ra thế? Vấn đề ở đây là cách thức hoạt động của mô-đun 535 của PHP. Nó thực sự chỉ là một proxy cho 534, làm công việc bẩn thỉu. Khi một phần dữ liệu được chọn, nó sẽ chuyển trực tiếp vào bộ nhớ. Vì bộ nhớ này không được quản lý bởi trình quản lý của PHP, nên 539 sẽ không hiển thị bất kỳ sự gia tăng nào trong việc sử dụng tài nguyên khi chúng tôi tăng giới hạn trong truy vấn của mình. Điều này dẫn đến các vấn đề giống như vấn đề đã trình bày ở trên khi chúng ta bị lừa khi nghĩ rằng việc quản lý bộ nhớ của chúng ta vẫn ổn. Nhưng trên thực tế, việc quản lý bộ nhớ của chúng ta bị thiếu sót nghiêm trọng và chúng ta có thể gặp các sự cố như sự cố được hiển thị ở trên Ít nhất bạn có thể tránh được sự giả mạo ở trên (mặc dù bản thân nó sẽ không cải thiện việc sử dụng bộ nhớ của bạn) bằng cách sử dụng mô-đun 540. 540 được biên dịch dưới dạng một phần mở rộng PHP gốc và nó sử dụng trình quản lý bộ nhớ của PHP Do đó, nếu chúng tôi chạy thử nghiệm trên bằng cách sử dụng 540 thay vì 535, chúng tôi sẽ có được bức tranh chân thực hơn nhiều về việc sử dụng bộ nhớ của chúng tôi 64 Và nó thậm chí còn tệ hơn thế, nhân tiện. Theo tài liệu PHP, 535 sử dụng gấp đôi tài nguyên so với 540 để lưu trữ dữ liệu, do đó, tập lệnh gốc sử dụng 535 thực sự đã sử dụng nhiều bộ nhớ hơn so với hiển thị ở đây (gần gấp đôi) Để tránh những vấn đề như vậy, hãy cân nhắc giới hạn kích thước truy vấn của bạn và sử dụng vòng lặp với số lần lặp nhỏ; . g 65 Khi chúng tôi xem xét cả lỗi PHP này trở lên, chúng tôi nhận ra rằng có một sự cân bằng hợp lý mà mã của bạn cần đạt được một cách lý tưởng giữa, một mặt, truy vấn của bạn quá chi tiết và lặp đi lặp lại, so với. có từng truy vấn riêng lẻ của bạn quá lớn. Như với hầu hết mọi thứ trong cuộc sống, sự cân bằng là cần thiết; Sai lầm thường gặp #6. Bỏ qua các vấn đề về Unicode/UTF-8Theo một nghĩa nào đó, đây thực sự là một vấn đề trong chính PHP hơn là vấn đề bạn gặp phải khi gỡ lỗi PHP, nhưng nó chưa bao giờ được giải quyết thỏa đáng. Cốt lõi của PHP 6 là nhận biết Unicode, nhưng điều đó đã bị đình trệ khi quá trình phát triển PHP 6 bị đình chỉ vào năm 2010 Nhưng điều đó không có nghĩa là không cho phép nhà phát triển chuyển giao đúng UTF-8 và tránh giả định sai lầm rằng tất cả các chuỗi nhất thiết phải là “ASCII cũ đơn giản”. Mã không thể xử lý đúng các chuỗi không phải ASCII nổi tiếng là đã đưa các lỗi heisen vào mã của bạn. Ngay cả các cuộc gọi 547 đơn giản cũng có thể gây ra sự cố nếu ai đó có họ như “Schrödinger” cố gắng đăng ký vào hệ thống của bạn Đây là một danh sách kiểm tra nhỏ để tránh những vấn đề như vậy trong mã của bạn
Một tài nguyên đặc biệt có giá trị về vấn đề này là Bài viết UTF-8 Primer cho PHP và MySQL của Francisco Claria trên blog này Sai lầm thường gặp #7. Giả sử Array( [0] => One [1] => Two [2] => Four)552 sẽ luôn chứa dữ liệu POST của bạnMặc dù có tên như vậy, nhưng mảng 552 không phải lúc nào cũng chứa dữ liệu POST của bạn và có thể dễ dàng thấy trống. Để hiểu điều này, chúng ta hãy xem một ví dụ. Giả sử chúng tôi thực hiện yêu cầu máy chủ với cuộc gọi 554 như sau 66 (Nhân tiện, lưu ý 555 ở đây. Chúng tôi gửi dữ liệu dưới dạng JSON, khá phổ biến đối với API. Ví dụ, đó là mặc định để đăng trong dịch vụ AngularJS 556. ) Về phía máy chủ trong ví dụ của chúng tôi, chúng tôi chỉ cần kết xuất mảng 552 67 Thật ngạc nhiên, kết quả sẽ là 68 Tại sao? Câu trả lời là PHP chỉ tự động phân tích cú pháp tải trọng POST khi nó có loại nội dung là 559 hoặc 560. Lý do cho điều này là do lịch sử - hai loại nội dung này về cơ bản là những loại duy nhất được sử dụng nhiều năm trước khi 552 của PHP được triển khai. Vì vậy, với bất kỳ loại nội dung nào khác (ngay cả những loại khá phổ biến hiện nay, như ________ 1562), PHP không tự động tải trọng tải POST Vì 552 là một siêu toàn cầu, nếu chúng ta ghi đè lên nó một lần (tốt nhất là ở phần đầu trong tập lệnh của chúng ta), giá trị đã sửa đổi (i. e. , bao gồm tải trọng POST) sau đó sẽ được tham chiếu trong toàn bộ mã của chúng tôi. Điều này rất quan trọng vì 552 thường được sử dụng bởi các khung công tác PHP và hầu hết tất cả các tập lệnh tùy chỉnh để trích xuất và chuyển đổi dữ liệu yêu cầu Vì vậy, ví dụ: khi xử lý tải trọng POST có loại nội dung là 562, chúng tôi cần phân tích cú pháp nội dung yêu cầu theo cách thủ công (i. e. , giải mã dữ liệu JSON) và ghi đè biến 552, như sau 69 Sau đó, khi chúng tôi kết xuất mảng 552, chúng tôi thấy rằng nó bao gồm chính xác tải trọng POST; . g 70Sai lầm thường gặp #8. Nghĩ rằng PHP hỗ trợ kiểu dữ liệu ký tựNhìn vào đoạn mã mẫu này và thử đoán xem nó sẽ in gì 71Nếu bạn trả lời từ 'a' đến 'z', bạn có thể ngạc nhiên khi biết rằng mình đã sai Có, nó sẽ in từ 'a' đến 'z', nhưng sau đó nó cũng sẽ in từ 'aa' đến 'yz'. Hãy xem tại sao Trong PHP không có kiểu dữ liệu 568; . Với ý nghĩ đó, việc tăng 569 571 trong PHP mang lại 572 72Tuy nhiên, để gây nhầm lẫn hơn nữa, 572 về mặt từ điển ít hơn 571 73Đó là lý do tại sao mã mẫu được trình bày ở trên in các chữ cái từ 575 đến 571, nhưng sau đó cũng in ra từ 572 đến 578. Nó dừng khi đạt đến ________ 1579, đây là giá trị đầu tiên nó gặp mà nó “lớn hơn” ________ 1571 74Trong trường hợp đó, đây là một cách để lặp đúng các giá trị từ 'a' đến 'z' trong PHP 75Hay cách khác 76Sai lầm thường gặp #9. Bỏ qua các tiêu chuẩn mã hóaMặc dù bỏ qua các tiêu chuẩn mã hóa không trực tiếp dẫn đến việc cần phải gỡ lỗi mã PHP, nhưng đây có lẽ vẫn là một trong những điều quan trọng nhất cần thảo luận ở đây Bỏ qua các tiêu chuẩn mã hóa có thể gây ra hàng loạt vấn đề cho một dự án. Tốt nhất, nó dẫn đến mã không nhất quán (vì mọi nhà phát triển đều “làm việc của riêng họ”). Nhưng tệ nhất, nó tạo ra mã PHP không hoạt động hoặc có thể khó điều hướng (đôi khi gần như không thể), khiến việc gỡ lỗi, nâng cao, bảo trì trở nên cực kỳ khó khăn. Và điều đó có nghĩa là giảm năng suất cho nhóm của bạn, bao gồm rất nhiều nỗ lực lãng phí (hoặc ít nhất là không cần thiết) May mắn thay cho các nhà phát triển PHP, có Khuyến nghị về Tiêu chuẩn PHP (PSR), bao gồm năm tiêu chuẩn sau
PSR ban đầu được tạo ra dựa trên đầu vào từ những người bảo trì các nền tảng được công nhận nhất trên thị trường. Zend, Drupal, Symfony, Joomla và những người khác đã đóng góp cho các tiêu chuẩn này và hiện đang tuân theo chúng. Ngay cả PEAR, đã cố gắng trở thành một tiêu chuẩn trong nhiều năm trước đó, giờ cũng tham gia vào PST Theo một nghĩa nào đó, tiêu chuẩn mã hóa của bạn là gì hầu như không quan trọng, miễn là bạn đồng ý với một tiêu chuẩn và tuân theo nó, nhưng tuân theo PSR nói chung là một ý tưởng hay trừ khi bạn có một số lý do thuyết phục về dự án của mình để làm khác đi. Ngày càng có nhiều nhóm và dự án tuân thủ PSR. Tại thời điểm này, Tt chắc chắn được công nhận là “tiêu chuẩn” của phần lớn các nhà phát triển PHP, vì vậy việc sử dụng nó sẽ giúp đảm bảo rằng các nhà phát triển mới quen thuộc và thoải mái với tiêu chuẩn viết mã của bạn khi họ tham gia nhóm của bạn. Sai lầm thường gặp #10. Lạm dụng Array( [0] => One [1] => Two [2] => Four)581Một số nhà phát triển PHP thích sử dụng 581 để kiểm tra boolean cho mọi thứ. Tuy nhiên, có trường hợp điều này có thể dẫn đến nhầm lẫn Trước tiên, hãy quay lại mảng và các phiên bản 530 (bắt chước mảng). Với sự giống nhau của chúng, thật dễ dàng để giả định rằng các mảng và thực thể 530 sẽ hoạt động giống hệt nhau. Tuy nhiên, điều này chứng tỏ là một giả định nguy hiểm. Ví dụ, trong PHP 5. 0 77Và để làm cho vấn đề trở nên tồi tệ hơn, kết quả sẽ khác trước PHP 5. 0 78Thật không may, cách tiếp cận này khá phổ biến. Ví dụ: đây là cách 585 của Zend Framework 2 trả về dữ liệu khi gọi 586 trên kết quả 587 như tài liệu gợi ý. Nhà phát triển có thể dễ dàng trở thành nạn nhân của lỗi này với dữ liệu đó Để tránh những vấn đề này, cách tiếp cận tốt hơn để kiểm tra cấu trúc mảng trống là sử dụng 588 79Và tình cờ thay, vì PHP ép kiểu 589 thành 57, nên 588 cũng có thể được sử dụng trong điều kiện 592 để kiểm tra các mảng trống. Cũng cần lưu ý rằng, trong PHP, 588 là độ phức tạp không đổi (hoạt động _______1594) trên các mảng, điều này càng làm rõ ràng hơn rằng đó là lựa chọn đúng đắn Một ví dụ khác khi 581 có thể nguy hiểm là khi kết hợp nó với hàm lớp phép thuật 596. Hãy xác định hai lớp và có thuộc tính 523 trong cả hai Trước tiên, hãy định nghĩa một lớp 598 bao gồm 523 như một thuộc tính bình thường 0Sau đó, hãy định nghĩa một lớp 600 sử dụng toán tử 596 ma thuật để truy cập thuộc tính 523 của nó 1OK, bây giờ hãy xem điều gì sẽ xảy ra khi chúng ta cố gắng truy cập thuộc tính 523 của mỗi lớp này 2Tốt cho đến nay Nhưng bây giờ hãy xem điều gì sẽ xảy ra khi chúng ta gọi 581 trên mỗi trong số này 3ừ. Vì vậy, nếu chúng ta dựa vào 581, chúng ta có thể bị nhầm lẫn khi tin rằng thuộc tính 523 của 607 trống, trong khi trên thực tế, nó được đặt thành 608 Thật không may, nếu một lớp sử dụng hàm 596 ma thuật để truy xuất giá trị của thuộc tính, thì không có cách nào dễ dàng để kiểm tra xem giá trị thuộc tính đó có trống hay không. Bên ngoài phạm vi của lớp, bạn thực sự chỉ có thể kiểm tra xem giá trị 58 có được trả về hay không và điều đó không nhất thiết có nghĩa là khóa tương ứng không được đặt, vì nó thực sự có thể được đặt thành 58Ngược lại, nếu chúng ta cố gắng tham chiếu một thuộc tính không tồn tại của một thể hiện lớp 598, chúng ta sẽ nhận được một thông báo tương tự như sau 4Vì vậy, điểm chính ở đây là phương pháp 581 nên được sử dụng cẩn thận vì nó có thể gây nhầm lẫn - hoặc thậm chí có khả năng gây hiểu lầm - kết quả, nếu không cẩn thận Gói (lạiTính dễ sử dụng của PHP có thể ru ngủ các nhà phát triển vào một cảm giác thoải mái sai lầm, khiến họ dễ bị gỡ lỗi PHP trong thời gian dài do một số sắc thái và đặc điểm riêng của ngôn ngữ. Điều này có thể dẫn đến việc PHP không hoạt động và các vấn đề như được mô tả ở đây Ngôn ngữ PHP đã phát triển đáng kể trong suốt lịch sử 20 năm của nó. Tự làm quen với sự tinh tế của nó là một nỗ lực đáng giá, vì nó sẽ giúp đảm bảo rằng phần mềm bạn sản xuất có khả năng mở rộng, mạnh mẽ và dễ bảo trì hơn thẻ PHPNgười làm việc tự do? Tìm công việc tiếp theo của bạn. Việc làm Lập trình viên PHP Xem thông tin đầy đủ Ilya Sanosian Kỹ sư phần mềm Giới thiệu về tác giả Ilya là nhà tư vấn CNTT, kiến trúc web và quản lý với hơn một thập kỷ kinh nghiệm xây dựng và lãnh đạo nhóm, đào tạo đồng nghiệp và giúp các quy trình hoạt động lâu dài bằng cách xây dựng quy trình công việc hiệu quả và tài liệu minh bạch. Kiến thức miền của Ilya bao gồm robot, tin tức, bảo mật trực tuyến, chăm sóc sức khỏe, tiếp thị trực tuyến và du lịch Thuê Ilya Bình luậnPhil nghèo Bài viết rất hay, rất nhiều thông tin Phil nghèo Bài viết rất hay, rất nhiều thông tin thebeline Trời ạ, một số trong số này phù hợp với tôi (như các truy vấn bên trong các vòng lặp, chúng tôi thậm chí có một hoặc hai bộ [trước khi tôi viết lại chúng] các truy vấn bên trong các vòng lặp đã kích hoạt các vòng lặp tiếp theo với các truy vấn. một mớ hỗn độn thối rữa). Tuy nhiên, tôi không biết liệu tôi có nên gọi đây là 10 vấn đề phổ biến nhất hay không, cụ thể là bởi vì, trong khi những vấn đề này chắc chắn gây nhầm lẫn, các nhà phát triển thường gặp những vấn đề này và giải quyết chúng theo nhu cầu của họ một lần rồi tiếp tục. Bài viết không có lỗi, nhưng với một danh sách dài dằng dặc như PHP có, việc chọn ra chỉ 10 bài viết ngắn là điều không thể. Danh sách này thật điên rồ. http. //eev. ee/blog/2012/04/09/php-a-fractal-of-bad-design/ thebeline Trời ạ, một số trong số này phù hợp với tôi (như các truy vấn bên trong các vòng lặp, chúng tôi thậm chí có một hoặc hai bộ [trước khi tôi viết lại chúng] các truy vấn bên trong các vòng lặp đã kích hoạt các vòng lặp tiếp theo với các truy vấn. một mớ hỗn độn thối rữa). Tuy nhiên, tôi không biết liệu tôi có nên gọi đây là 10 vấn đề phổ biến nhất hay không, cụ thể là bởi vì, trong khi những vấn đề này chắc chắn gây nhầm lẫn, các nhà phát triển thường gặp những vấn đề này và giải quyết chúng theo nhu cầu của họ một lần rồi tiếp tục. Bài viết không có lỗi, nhưng với một danh sách dài dằng dặc như PHP có, việc chọn ra chỉ 10 bài viết ngắn là điều không thể. Danh sách này thật điên rồ. http. //eev. ee/blog/2012/04/09/php-a-fractal-of-bad-design/ Alejandro Pablo Tkachuk Top 10 tuyệt vời Alejandro Pablo Tkachuk Top 10 tuyệt vời Wilhelm Murdoch Ôi Chúa ơi. Đây là bài viết của tôi khi mọi người hỏi tôi tại sao tôi không thích ngôn ngữ này. Rõ ràng, mọi ngôn ngữ đều có những thiếu sót của nó, nhưng sau 10 năm sử dụng PHP, nó đã để lại một mùi vị rất tệ trong miệng tôi Wilhelm Murdoch Ôi Chúa ơi. Đây là bài viết của tôi khi mọi người hỏi tôi tại sao tôi không thích ngôn ngữ này. Rõ ràng, mọi ngôn ngữ đều có những thiếu sót của nó, nhưng sau 10 năm sử dụng PHP, nó đã để lại một mùi vị rất tệ trong miệng tôi thợ đánh bóng FWIW, trong #10 bạn nói "// PHP 5. 0 trở lên. $array = [];" Ký hiệu mảng đó KHÔNG hoạt động trong PHP 5. 0-5. 3, kể từ khi nó được giới thiệu trong PHP 5. 4 thợ đánh bóng FWIW, trong #10 bạn nói "// PHP 5. 0 trở lên. $array = [];" Ký hiệu mảng đó KHÔNG hoạt động trong PHP 5. 0-5. 3, kể từ khi nó được giới thiệu trong PHP 5. 4 Bruno Seixas Bài báo tuyệt vời. Cảm ơn =) Mỗi ngày chúng ta có thể học được điều gì đó, cải thiện phong cách viết mã của mình. Điều này chỉ ra đúng hướng Bruno Seixas Bài báo tuyệt vời. Cảm ơn =) Mỗi ngày chúng ta có thể học được điều gì đó, cải thiện phong cách viết mã của mình. Điều này chỉ ra đúng hướng Scott Mọi chuyện diễn ra rất suôn sẻ cho đến khi bạn đề cập đến PSR2. ừ Scott Mọi chuyện diễn ra rất suôn sẻ cho đến khi bạn đề cập đến PSR2. ừ Will Haven Bây giờ ngôn ngữ của bạn là gì? Will Haven Bây giờ ngôn ngữ của bạn là gì? Vojtech Kurka Chỉ là một cảnh báo. Khi sử dụng các mảng không trống, count($array) có thể làm chậm mã của bạn một cách đáng kể. Hơn nữa, một số nhà phát triển có xu hướng sử dụng if(count($arr)). vòng lặp bên trong. Tôi sẽ không khuyến nghị thực hành này cho các mảng Vojtech Kurka Chỉ là một cảnh báo. Khi sử dụng các mảng không trống, count($array) có thể làm chậm mã của bạn một cách đáng kể. Hơn nữa, một số nhà phát triển có xu hướng sử dụng if(count($arr)). vòng lặp bên trong. Tôi sẽ không khuyến nghị thực hành này cho các mảng sương khói Cảm ơn vì bài viết rất nhiều thông tin và tôi thích nó nhưng "Mặc dù tên của nó, isset() không chỉ trả về false nếu một mục không tồn tại mà còn trả về false cho các giá trị null. " là sai, nó trả về true nếu giá trị nếu sai và chỉ trả về false nếu giá trị là null sương khói Cảm ơn vì bài viết rất nhiều thông tin và tôi thích nó nhưng "Mặc dù tên của nó, isset() không chỉ trả về false nếu một mục không tồn tại mà còn trả về false cho các giá trị null. " là sai, nó trả về true nếu giá trị nếu sai và chỉ trả về false nếu giá trị là null Maxim Naguchev > Thật không may, nếu một lớp sử dụng hàm __get() ma thuật để truy xuất giá trị của thuộc tính, > không có cách nào dễ dàng để kiểm tra xem giá trị thuộc tính đó có trống hay không. Nó không đúng. Xây dựng empty($var) trước tiên hãy thử gọi isset() và, nếu biến được đặt, sau đó kiểm tra xem biến có trống hay không. Vì vậy, nếu lớp sử dụng phương thức ma thuật _get(), thì nó phải nhận ra phương thức ma thuật _isset(). Và trống() sẽ hoạt động bình thường Maxim Naguchev > Thật không may, nếu một lớp sử dụng hàm __get() ma thuật để truy xuất giá trị của thuộc tính, > không có cách nào dễ dàng để kiểm tra xem giá trị thuộc tính đó có trống hay không. Nó không đúng. Xây dựng empty($var) trước tiên hãy thử gọi isset() và, nếu biến được đặt, sau đó kiểm tra xem biến có trống hay không. Vì vậy, nếu lớp sử dụng phương thức ma thuật _get(), thì nó phải nhận ra phương thức ma thuật _isset(). Và trống() sẽ hoạt động bình thường Myroniar hữu ích, cảm ơn Myroniar hữu ích, cảm ơn Dusan Lukic Cảm ơn vì bài viết rất hữu ích này. Tôi chỉ muốn sửa một chút, bạn nói rằng "PHP luôn truyền đối tượng theo tham chiếu", điều này thực tế không hoàn toàn đúng, vì PHP sử dụng cơ chế đặc biệt cho các đối tượng tương tự như truyền theo tham chiếu, đó là câu thứ hai trên . http. //php. net/manual/vi/ngôn ngữ. oop5. người giới thiệu. php Ngoài ra, bài viết tuyệt vời Dusan Lukic Cảm ơn vì bài viết rất hữu ích này. Tôi chỉ muốn sửa một chút, bạn nói rằng "PHP luôn truyền đối tượng theo tham chiếu", điều này thực tế không hoàn toàn đúng, vì PHP sử dụng cơ chế đặc biệt cho các đối tượng tương tự như truyền theo tham chiếu, đó là câu thứ hai trên . http. //php. net/manual/vi/ngôn ngữ. oop5. người giới thiệu. php Ngoài ra, bài viết tuyệt vời Roy Bài báo được viết rất tốt với nội dung gốc. Tốt lắm Roy Bài báo được viết rất tốt với nội dung gốc. Tốt lắm Donato C. Laynes Gonzales Về #2, $_POST['active'] sẽ tạo E_NOTICE nếu khóa không tồn tại (các hộp kiểm và radio không được chọn) Nếu bạn quan tâm đến hiệu suất và bảo mật của PHP, điều này rất quan trọng. array_key_exists là tùy chọn tốt hơn như đã giải thích. Trân trọng Donato C. Laynes Gonzales Về #2, $_POST['active'] sẽ tạo E_NOTICE nếu khóa không tồn tại (các hộp kiểm và radio không được chọn) Nếu bạn quan tâm đến hiệu suất và bảo mật của PHP, điều này rất quan trọng. array_key_exists là tùy chọn tốt hơn như đã giải thích. Trân trọng Aschwin Wesselius Đáng ngạc nhiên là không ai đề cập đến việc bạn sử dụng /root/test. php. Tôi biết, đó là môi trường cục bộ và tất cả, nhưng vẫn chạy các tập lệnh kiểm tra trong thư mục gốc của bạn, đặc biệt là các kiểm tra ngốn nhiều bộ nhớ. Điều đó được thực hiện trên mục đích? Aschwin Wesselius Đáng ngạc nhiên là không ai đề cập đến việc bạn sử dụng /root/test. php. Tôi biết, đó là môi trường cục bộ và tất cả, nhưng vẫn chạy các tập lệnh kiểm tra trong thư mục gốc của bạn, đặc biệt là các kiểm tra ngốn nhiều bộ nhớ. Điều đó được thực hiện trên mục đích? ajaniashish Bài viết xuất sắc Ilya, hoàn toàn đồng ý với nhận định của bạn "hàng giờ vò đầu bứt tóc". Thông thường, khi nói đến việc tối ưu hóa tốc độ trang web, chúng tôi thấy các truy vấn không cần thiết bên trong các vòng lặp. Công cụ tuyệt vời ajaniashish Bài viết xuất sắc Ilya, hoàn toàn đồng ý với nhận định của bạn "hàng giờ vò đầu bứt tóc". Thông thường, khi nói đến việc tối ưu hóa tốc độ trang web, chúng tôi thấy các truy vấn không cần thiết bên trong các vòng lặp. Công cụ tuyệt vời Scott Bởi vì PSR-2 có ý định trở thành Tiêu chuẩn mã hóa thực sự duy nhất. Có, các tiêu chuẩn mã hóa là bắt buộc, nhưng không nhất thiết phải là PSR-2. Ngay cả bài viết này cũng nói rằng bạn cần một "lý do thuyết phục" để không sử dụng nó, điều đơn giản là không đúng Scott Bởi vì PSR-2 có ý định trở thành Tiêu chuẩn mã hóa thực sự duy nhất. Có, các tiêu chuẩn mã hóa là bắt buộc, nhưng không nhất thiết phải là PSR-2. Ngay cả bài viết này cũng nói rằng bạn cần một "lý do thuyết phục" để không sử dụng nó, điều đơn giản là không đúng Jason EdgeCombe Trong mẹo số 4 và số 5, sử dụng truy vấn () với nối chuỗi là một ví dụ trong sách giáo khoa về lỗ hổng SQL injection. Tốt hơn là sử dụng các câu lệnh đã chuẩn bị sẵn hoặc ít nhất là cảnh báo người đọc rằng các biến đầu vào phải được làm sạch trước. Vui lòng cập nhật bài viết để mọi người không mù quáng sử dụng mã ví dụ và nghĩ rằng nó an toàn. Bài viết này cũng cần có ngày khi bài viết được viết hoặc cập nhật lần cuối để người đọc có thể biết liệu thông tin có cũ không Jason EdgeCombe Trong mẹo số 4 và số 5, sử dụng truy vấn () với nối chuỗi là một ví dụ trong sách giáo khoa về lỗ hổng SQL injection. Tốt hơn là sử dụng các câu lệnh đã chuẩn bị sẵn hoặc ít nhất là cảnh báo người đọc rằng các biến đầu vào phải được làm sạch trước. Vui lòng cập nhật bài viết để mọi người không mù quáng sử dụng mã ví dụ và nghĩ rằng nó an toàn. Bài viết này cũng cần có ngày khi bài viết được viết hoặc cập nhật lần cuối để người đọc có thể biết liệu thông tin có cũ không Công viên Grant Wesley Đó là điều tương tự. null là giá trị null duy nhất Công viên Grant Wesley Đó là điều tương tự. null là giá trị null duy nhất Jeff Mattson Trong Sai lầm phổ biến #2. Ví dụ của bạn không nên đọc nếu (. $_POST['đang hoạt động']) { echo 'bài đăng không hoạt động'; Jeff Mattson Trong Sai lầm phổ biến #2. Ví dụ của bạn không nên đọc nếu (. $_POST['đang hoạt động']) { echo 'bài đăng không hoạt động'; M. S. vignesh có cách nào khác không? M. S. vignesh có cách nào khác không? Vojtech Kurka sử dụng một biến làm bộ đếm Vojtech Kurka sử dụng một biến làm bộ đếm Erutan409 Tôi thấy những điều sau đây là vô lý. Dấu ngoặc mở cho lớp PHẢI ở dòng tiếp theo và dấu ngoặc đóng PHẢI ở dòng tiếp theo sau phần thân. Dấu ngoặc mở cho các phương thức PHẢI đi trên dòng tiếp theo và dấu ngoặc đóng PHẢI đi trên dòng tiếp theo sau phần thân. Vì vậy, tôi cũng gặp một số vấn đề với PSR-2 Erutan409 Tôi thấy những điều sau đây là vô lý. Dấu ngoặc mở cho lớp PHẢI ở dòng tiếp theo và dấu ngoặc đóng PHẢI ở dòng tiếp theo sau phần thân. Dấu ngoặc mở cho các phương thức PHẢI đi trên dòng tiếp theo và dấu ngoặc đóng PHẢI đi trên dòng tiếp theo sau phần thân. Vì vậy, tôi cũng gặp một số vấn đề với PSR-2 phat_boi Thật. Tuy nhiên, tiêu chuẩn nào được sử dụng không quan trọng miễn là nó rộng khắp tổ chức. Bạn không vào công ty mà chỉ bắt đầu sử dụng PSR-2 khi đã có một tiêu chuẩn được thiết lập. Bạn kết thúc với một mớ hỗn độn theo cách đó phat_boi Thật. Tuy nhiên, tiêu chuẩn nào được sử dụng không quan trọng miễn là nó rộng khắp tổ chức. Bạn không vào công ty mà chỉ bắt đầu sử dụng PSR-2 khi đã có một tiêu chuẩn được thiết lập. Bạn kết thúc với một mớ hỗn độn theo cách đó Julian Chappell +1. tất cả kẻ giết người không phụ Julian Chappell +1. tất cả kẻ giết người không phụ Juukie14 👍 mẹo hay Juukie14 👍 mẹo hay Không Tên > Sai lầm thường gặp #5 Đó không phải là sai lầm thực sự. Hãy xem xét, nếu truy vấn của bạn có thời lượng chạy 1 giây/truy vấn, vậy điều gì xảy ra nếu bạn cần 50-100 truy vấn như vậy? . Nhưng bạn phải xóa bộ nhớ tài nguyên sau khi nhận được kết quả truy vấn nếu bạn có ít hơn một số truy vấn đơn giản. Và về PSR-1 > Tên lớp PHẢI được khai báo trong StudlyCaps Đây là điều điên rồ nhất trong PSR Không Tên > Sai lầm thường gặp #5 Đó không phải là sai lầm thực sự. Hãy xem xét, nếu truy vấn của bạn có thời lượng chạy 1 giây/truy vấn, vậy điều gì xảy ra nếu bạn cần 50-100 truy vấn như vậy? . Nhưng bạn phải xóa bộ nhớ tài nguyên sau khi nhận được kết quả truy vấn nếu bạn có ít hơn một số truy vấn đơn giản. Và về PSR-1 > Tên lớp PHẢI được khai báo trong StudlyCaps Đây là điều điên rồ nhất trong PSR Không Tên > Sai lầm thường gặp #10. Bạn không bao giờ nên sử dụng ArrayObject thay vì mảng gốc. Nhưng bạn nên đặt kiểu định nghĩa khi bạn cần một mảng làm đối số. Bạn phải luôn biết những gì bạn mong đợi thì sẽ không bao giờ mắc lỗi trong các ví dụ trống/isset Không Tên > Sai lầm thường gặp #10. Bạn không bao giờ nên sử dụng ArrayObject thay vì mảng gốc. Nhưng bạn nên đặt kiểu định nghĩa khi bạn cần một mảng làm đối số. Bạn phải luôn biết những gì bạn mong đợi thì sẽ không bao giờ mắc lỗi trong các ví dụ trống/isset Người vượt qua Idemudia Tuyệt vời, cảm ơn bạn Người vượt qua Idemudia Tuyệt vời, cảm ơn bạn Erik Bêlarut một giải pháp tốt cho lỗi #1 thay vì nhớ gọi unset() sẽ là sử dụng array_map() Erik Bêlarut một giải pháp tốt cho lỗi #1 thay vì nhớ gọi unset() sẽ là sử dụng array_map() Evgeny Chernyavskiy cũng như mảng_walk() Evgeny Chernyavskiy cũng như mảng_walk() timw4mail Tuy nhiên, bài đăng đó có những điểm không chính xác vào thời điểm đó và ít liên quan hơn bao giờ hết. Tôi sẽ không nói rằng PHP là một ngôn ngữ 'thuần' hay 'sạch', nhưng nói chung nó không dễ bị lỗi như 'bài viết' đó có vẻ như vậy timw4mail Tuy nhiên, bài đăng đó có những điểm không chính xác vào thời điểm đó và ít liên quan hơn bao giờ hết. Tôi sẽ không nói rằng PHP là một ngôn ngữ 'thuần' hay 'sạch', nhưng nói chung nó không dễ bị lỗi như 'bài viết' đó có vẻ như vậy Ricardo Sánchez Tại sao không chỉ. mảng $?. ) Chúng tôi biết biến luôn được đặt, luôn luôn. Tại sao bạn cố gắng sử dụng một biến có thể không tồn tại? . Các biến phải luôn tồn tại. cộng với isset và trống dẫn đến lỗi đánh máy trong tập lệnh. $myVars = 0; . Hãy để trình biên dịch phàn nàn thay vì im lặng với @/isset/empty. PSR chỉ nhằm mục đích sử dụng nội bộ. Nó KHÔNG BAO GIỜ nhằm mục đích được sử dụng cho người khác. như họ nói trong Câu hỏi thường gặp. "Không ai trong nhóm muốn nói với bạn, với tư cách là một lập trình viên, cách xây dựng ứng dụng của bạn. " Vì vậy, đó là một lỗi phổ biến mà các lập trình viên php mắc phải, hãy làm theo khuyến nghị không dành cho họ. ) Ricardo Sánchez Tại sao không chỉ. mảng $?. ) Chúng tôi biết biến luôn được đặt, luôn luôn. Tại sao bạn cố gắng sử dụng một biến có thể không tồn tại? . Các biến phải luôn tồn tại. cộng với isset và trống dẫn đến lỗi đánh máy trong tập lệnh. $myVars = 0; . Hãy để trình biên dịch phàn nàn thay vì im lặng với @/isset/empty. PSR chỉ nhằm mục đích sử dụng nội bộ. Nó KHÔNG BAO GIỜ nhằm mục đích được sử dụng cho người khác. như họ nói trong Câu hỏi thường gặp. "Không ai trong nhóm muốn nói với bạn, với tư cách là một lập trình viên, cách xây dựng ứng dụng của bạn. " Vì vậy, đó là một lỗi phổ biến mà các lập trình viên php mắc phải, hãy làm theo khuyến nghị không dành cho họ. ) Marco Cante Dành cho 2. get_define_vars với array_key_exist rất chậm nếu bạn đặt nhiều biến, phải không? Marco Cante Dành cho 2. get_define_vars với array_key_exist rất chậm nếu bạn đặt nhiều biến, phải không? khổ hạnh đó là vấn đề về quan điểm và các tiêu chuẩn được xác định bởi thực tiễn của đa số. Tại sao lại vô lý như vậy? . Các định nghĩa lớp và định nghĩa phương thức có thể dài (đôi khi ghi nhật ký vô lý) để dấu ngoặc mở có thể ở bên phải. Để nó tự động xuống dòng tiếp theo giúp tiết kiệm khả năng đọc và đó chỉ là một quy tắc giúp giảm ô nhiễm khổ hạnh đó là vấn đề về quan điểm và các tiêu chuẩn được xác định bởi thực tiễn của đa số. Tại sao lại vô lý như vậy? . Các định nghĩa lớp và định nghĩa phương thức có thể dài (đôi khi ghi nhật ký vô lý) để dấu ngoặc mở có thể ở bên phải. Để nó tự động xuống dòng tiếp theo giúp tiết kiệm khả năng đọc và đó chỉ là một quy tắc giúp giảm ô nhiễm khổ hạnh 1. Tiện ích mở rộng mysql được đề cập ở đó không được dùng nữa ngay cả tại thời điểm viết bài. Đó là một vấn đề mà thậm chí sau đó không cần giải pháp mã. 2. Nghiêm túc mà nói, tác giả đang đưa ra một giải pháp thay thế, một phương pháp được loại bỏ có chủ đích khỏi php lõi (trả lại bằng cách tham khảo) mà tất cả các hướng dẫn thực hành tốt nhất đều khuyên chống lại (trừ khi có lý do thực sự chính đáng) vì lý do duy nhất là cho phép thay đổi thành viên lớp RIÊNG TƯ . tại sao thúc đẩy trở lại bằng cách tham khảo? khổ hạnh 1. Tiện ích mở rộng mysql được đề cập ở đó không được dùng nữa ngay cả tại thời điểm viết bài. Đó là một vấn đề mà thậm chí sau đó không cần giải pháp mã. 2. Nghiêm túc mà nói, tác giả đang đưa ra một giải pháp thay thế, một phương pháp được loại bỏ có chủ đích khỏi php lõi (trả lại bằng cách tham khảo) mà tất cả các hướng dẫn thực hành tốt nhất đều khuyên chống lại (trừ khi có lý do thực sự chính đáng) vì lý do duy nhất là cho phép thay đổi thành viên lớp RIÊNG TƯ . tại sao thúc đẩy trở lại bằng cách tham khảo? govindrajput Bài viết hay và thông tin rất hay có trong bài đăng này vì vậy tôi thích bài đăng này cảm ơn govindrajput Bài viết hay và thông tin rất hay có trong bài đăng này vì vậy tôi thích bài đăng này cảm ơn CÔNG TY TÀI CHÍNH NĂM SAO Bạn có cần một khoản vay để hợp nhất khoản nợ của mình ở mức 3% không? . Chúng tôi cung cấp dịch vụ tư vấn tài chính cho khách hàng, các công ty đang tìm kiếm khoản nợ / tài trợ cho vay và tìm kiếm vốn lưu động để bắt đầu một doanh nghiệp mới hoặc để mở rộng hoạt động kinh doanh hiện có. Các bên trung gian / Tư vấn / Môi giới được chào đón mang theo khách hàng của họ và được bảo vệ 100%. Các bên quan tâm nên liên hệ với chúng tôi để biết thêm thông tin qua email. fivestarfinancecompany@gmail. com Để gọi hoặc whatsapp chúng tôi +16042659337 CÔNG TY TÀI CHÍNH NĂM SAO Bạn có cần một khoản vay để hợp nhất khoản nợ của mình ở mức 3% không? . Chúng tôi cung cấp dịch vụ tư vấn tài chính cho khách hàng, các công ty đang tìm kiếm khoản nợ / tài trợ cho vay và tìm kiếm vốn lưu động để bắt đầu một doanh nghiệp mới hoặc để mở rộng hoạt động kinh doanh hiện có. Các bên trung gian / Tư vấn / Môi giới được chào đón mang theo khách hàng của họ và được bảo vệ 100%. Các bên quan tâm nên liên hệ với chúng tôi để biết thêm thông tin qua email. fivestarfinancecompany@gmail. com Để gọi hoặc whatsapp chúng tôi +16042659337 điểm ngon Heyas, I may be 4 or 5 years to late for a response, but no one seems to know the right answer to this one. If I create a php index file with html tags neatly laid out which is worse: A) Having a bunch of php code on top of the index php file and some in the middle for example "" <--- alot of these or B) index php file with all the html tags neatly, and 1 or 2 include(""); ? I'm assuming A) is worse but why am I doing B) and avoiding A)? Thanks in advance! bah, it wont let me type the php carot and question mark and then php it omits it but its supposed to go where it looks janky điểm ngon Heyas, I may be 4 or 5 years to late for a response, but no one seems to know the right answer to this one. If I create a php index file with html tags neatly laid out which is worse: A) Having a bunch of php code on top of the index php file and some in the middle for example "" <--- alot of these or B) index php file with all the html tags neatly, and 1 or 2 include(""); ? I'm assuming A) is worse but why am I doing B) and avoiding A)? Thanks in advance! bah, it wont let me type the php carot and question mark and then php it omits it but its supposed to go where it looks janky kín đáo good awesome information, thanks yaser Discreet Soft AbelardoLG Bài báo tuyệt vời. Cảm ơn vì đã mang nó đến cho chúng tôi. . ) anh JorgeC PHP, bao gồm PHP +7 với opcache khá hiệu quả. Tuy nhiên, PHP nói chung xử lý bộ nhớ rất tệ, nó thường sử dụng từ x2. 5 (trung bình) cho mọi bộ nhớ được sử dụng. Vì vậy, nếu chúng ta có một mảng có 100 phần tử (100kb), PHP sử dụng 250kb, cộng với các chỉ mục. get_define_vars() có thể chiếm nhiều bộ nhớ vì chúng tôi đang tạo một mảng mới với tất cả các biến, ngay cả khi thời gian này ngắn Bill Jay bài viết hay. Tuy nhiên 10 sai lầm này không phổ biến. Đây là 10 lỗi mã hóa mà các nhà phát triển PHP khó phát hiện. Cá nhân, isset() thường hơi khó hiểu. Quy tắc là tránh đặt các biến thành null trong PHP vì điều này tương đương với việc hủy đặt chúng. bỏ đặt($a); . $items = mảng(); Làm cách nào để kiểm tra tất cả dữ liệu bài đăng trong PHP?Kiểm tra các giá trị POST trong PHP . Kiểm tra xem có BẤT KỲ dữ liệu POST nào không. //Ghi chú. Điều này giải quyết là đúng ngay cả khi tất cả các giá trị $_POST là các chuỗi trống nếu (. trống($_POST)) { // xử lý dữ liệu bài viết $fromPerson = '+from%3A'. . Chỉ kiểm tra xem Khóa THAM GIA có sẵn trong dữ liệu bài đăng không Làm cách nào để chỉ lấy các khóa từ mảng trong PHP?Hàm array_keys() trả về một mảng chứa các khóa.
Làm cách nào để in khóa mảng trong PHP?Làm cách nào để lấy khóa mảng kết hợp trong PHP?Trả lời. Sử dụng hàm array_keys() của PHP
. |