Chuyển mảng thành object php
answer 15 Cái này làm việc cho tôi
sử dụng :
trả về:
như thường lệ, bạn có thể lặp nó như sau:
15 hữu ích 2 bình luận chia sẻ answer 477 Trong trường hợp đơn giản nhất, có lẽ đủ để "truyền" mảng thành một đối tượng:
Một tùy chọn khác là khởi tạo một lớp tiêu chuẩn dưới dạng một biến và lặp qua mảng của bạn trong khi gán lại các giá trị:
Như Edson Medina đã chỉ ra, một giải pháp thực sự sạch sẽ là sử dụng các
Điều này cũng (đệ quy) chuyển đổi tất cả các mảng con của bạn thành các đối tượng mà bạn có thể muốn hoặc không muốn. Thật không may, nó có hiệu suất 2-3 lần so với phương pháp lặp. Cảnh báo! (cảm ơn Ultra đã bình luận):
477 hữu ích 5 bình luận chia sẻ answer 146 bạn chỉ có thể sử dụng kiểu truyền để chuyển đổi một mảng thành đối tượng.
146 hữu ích 1 bình luận chia sẻ answer 93 Hack nhanh:
Không xinh, nhưng hoạt động. 93 hữu ích 5 bình luận chia sẻ answer 93 Dưới đây là ba cách:
93 hữu ích 5 bình luận chia sẻ answer 83 Cách dễ dàng sẽ là
Nhưng đó không phải là điều bạn muốn. Nếu bạn muốn các đối tượng bạn muốn đạt được một cái gì đó, nhưng điều đó bị thiếu trong câu hỏi này. Sử dụng các đối tượng chỉ vì lý do sử dụng các đối tượng không có ý nghĩa. 83 hữu ích 5 bình luận chia sẻ answer 29 Cách đơn giản, Điều này cũng sẽ tạo một đối tượng cho các mảng đệ quy:
29 hữu ích 2 bình luận chia sẻ answer 23 Tùy thuộc vào nơi bạn cần điều đó và làm thế nào để truy cập vào đối tượng, có nhiều cách khác nhau để làm điều đó. Ví dụ: chỉ cần gõ nó
Tuy nhiên, cách tương thích nhất là sử dụng một phương thức tiện ích (chưa phải là một phần của PHP) thực hiện việc đúc PHP tiêu chuẩn dựa trên một chuỗi xác định loại (hoặc bằng cách bỏ qua nó chỉ tham chiếu giá trị):
Ví dụ sử dụng trong trường hợp của bạn ( Bản demo trực tuyến ):
23 hữu ích 1 bình luận chia sẻ answer 15 Không có phương pháp tích hợp nào để thực hiện theo như tôi biết, nhưng nó dễ như một vòng lặp đơn giản:
Bạn có thể giải thích về điều đó nếu bạn cần nó để xây dựng đối tượng của mình một cách đệ quy. 15 hữu ích 0 bình luận chia sẻ answer 8 Trên thực tế nếu bạn muốn sử dụng điều này với các mảng đa chiều, bạn sẽ muốn sử dụng một số đệ quy.
8 hữu ích 0 bình luận chia sẻ answer 6 Tôi chắc chắn sẽ đi với một cách sạch sẽ như thế này:
nếu bạn gửi: bạn sẽ nhận được điều này: Tôi thấy điều này hợp lý hơn khi so sánh các câu trả lời trên từ các Đối tượng nên được sử dụng cho mục đích mà chúng được tạo ra (đóng gói các đối tượng nhỏ dễ thương). Ngoài ra, sử dụng get_object_vars đảm bảo rằng không có thuộc tính bổ sung nào được tạo trong Đối tượng bị thao túng (bạn không muốn một chiếc xe có tên gia đình cũng như một người cư xử với 4 bánh xe). 6 hữu ích 1 bình luận chia sẻ answer 5 Bạn cũng có thể sử dụng ArrayObject, ví dụ:
5 hữu ích 1 bình luận chia sẻ answer 5 đệ quy là bạn của bạn:
5 hữu ích 0 bình luận chia sẻ answer 5 Cái tôi sử dụng (nó là một thành viên trong lớp):
5 hữu ích 0 bình luận chia sẻ answer 5 Ít phức tạp nhưng dễ mở rộng kỹ thuật: Giả sử bạn có một mảng
Giả sử bạn có một lớp Person có thể có nhiều hoặc ít thuộc tính từ mảng này. ví dụ
Nếu bạn vẫn muốn thay đổi mảng của bạn thành đối tượng người. Bạn có thể sử dụng Lớp ArrayIterator.
Bây giờ bạn có đối tượng lặp. Tạo một lớp FilterIterator mở rộng; nơi bạn phải xác định phương thức trừu tượng chấp nhận. Làm theo ví dụ
Sự khắc phục ở trên sẽ ràng buộc tài sản chỉ khi nó tồn tại trong lớp. Thêm một phương thức nữa trong lớp PersonIterator
Hãy chắc chắn rằng bạn có các trình biến đổi được định nghĩa trong lớp của bạn. Bây giờ bạn đã sẵn sàng để gọi các hàm này, nơi bạn muốn tạo đối tượng.
5 hữu ích 0 bình luận chia sẻ answer 4 Dễ dàng:
Thí dụ:
Sau đó, điều sau đây là đúng:
4 hữu ích 2 bình luận chia sẻ answer 4 sử dụng chức năng này mà tôi đã thực hiện:
Sử dụng:
4 hữu ích 1 bình luận chia sẻ answer 4 Điều này đòi hỏi PHP7 vì tôi đã chọn sử dụng hàm lambda để khóa 'hàm bên trong' trong hàm chính. Hàm lambda được gọi đệ quy, do đó cần: "use (& $ Internalfunc)". Bạn có thể làm điều đó trong PHP5 nhưng không thể ẩn phần bên trong.
4 hữu ích 0 bình luận chia sẻ answer 2 Bạn cũng có thể làm điều này bằng cách thêm (đối tượng) bên trái biến để tạo một đối tượng mới.
http://codepad.org/9YmD1KsU 2 hữu ích 1 bình luận chia sẻ answer 2 Việc sử dụng
2 hữu ích 0 bình luận chia sẻ answer 2 Phương pháp tốt nhất trên THẾ GIỚI :)
Nếu bạn sử dụng các phương pháp khác nhau, bạn sẽ có vấn đề. Đây là phương pháp tốt nhất. Bạn đã từng thấy. 2 hữu ích 0 bình luận chia sẻ answer 2 lót
2 hữu ích 1 bình luận chia sẻ answer 1 CakePHP có một lớp đệ quy :: lớp ánh xạ về cơ bản ánh xạ một mảng vào một đối tượng. Bạn có thể cần phải thay đổi các mảng trông như thế nào để làm cho đối tượng trông giống như bạn muốn. http://api.cakephp.org/view_source/set/#line-158 Trường hợp xấu nhất, bạn có thể có được một vài ý tưởng từ chức năng này. 1 hữu ích 0 bình luận chia sẻ answer 1 Rõ ràng chỉ là phép ngoại suy một số câu trả lời của một số người khác, nhưng đây là hàm đệ quy sẽ chuyển đổi bất kỳ mảng chiều nào thành một đối tượng:
Và hãy nhớ rằng nếu mảng có các khóa số,
chúng vẫn có thể được tham chiếu trong đối tượng kết quả bằng cách sử dụng 1 hữu ích 0 bình luận chia sẻ answer 1 Lấy cảm hứng từ tất cả các mã này, tôi đã cố gắng tạo một phiên bản nâng cao với sự hỗ trợ: tên lớp cụ thể, tránh phương thức hàm tạo, mẫu 'đậu' và chế độ nghiêm ngặt (chỉ đặt các thuộc tính hiện có):
1 hữu ích 0 bình luận chia sẻ answer 1 MãChức năng này hoạt động tương tự như
Kiểm traKiểm tra 1: Mảng phẳng
Đầu ra:
Kiểm tra 2: Mảng đối tượng
Đầu ra:
Bài kiểm tra 3: Đối tượng
Đầu ra:
1 hữu ích 0 bình luận chia sẻ answer 0 tôi đã làm nó với cách khá đơn giản,
0 hữu ích 0 bình luận chia sẻ answer 0
0 hữu ích 0 bình luận chia sẻ answer 0 Bằng cách sử dụng (mảng) và (đối tượng) làm tiền tố, bạn chỉ cần chuyển đổi mảng đối tượng thành mảng tiêu chuẩn và ngược lại
0 hữu ích 0 bình luận chia sẻ answer 0 Tôi sử dụng cách sau đây để phân tích các mảng Yaml liên kết thành một trạng thái đối tượng. Điều này kiểm tra tất cả các mảng được cung cấp nếu có các đối tượng ẩn ở đó và cũng biến chúng trong các đối tượng.
Điều này biến một yaml được cấu hình là
đến một mảng bao gồm:
đến một đối tượng của:
0 hữu ích 0 bình luận chia sẻ |