Làm thế nào để trích xuất dữ liệu từ một mảng được đăng tuần tự meta?


23

Tôi tìm thấy một tập lệnh giải mã XML sang WP lưu trữ dữ liệu dưới dạng một mảng trong trường meta tùy chỉnh. Cách tốt nhất để trích xuất thông tin là gì?

Ví dụ: làm cách nào tôi có thể hiển thị trường "Sản xuất trong" là "CANADA"?

[_ttn_i_details] => Array ( [0] => a:5:{s:9:"engine_id";a:1:{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production Seq. Number";a:1:{i:0;s:6:"151411";}} )

Mã ví dụ trên được sản xuất thông qua print_r(get_post_custom($post->ID));.

Tôi thực sự đánh giá cao bất kỳ cái nhìn sâu sắc, cho dù nhỏ. :)


1
Nếu bạn sẽ bỏ phiếu xuống một câu hỏi ít nhất là đủ trưởng thành để nói lý do tại sao. Tôi đang cố gắng học php. Đây có thể là một điều cơ bản cho hầu hết các lập trình viên nhưng tôi đến từ một nền tảng thiết kế.
m-torin

Câu trả lời:


35

Sử dụng unserialize () để chuyển đổi nó thành một mảng.

$mydata = 'a:5:{s:9:"engine_id";a:1:{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production Seq. Number";a:1:{i:0;s:6:"151411";}}';
$mydata = unserialize($mydata);
echo $mydata['Manufactured in'][0];

Chỉnh sửa - Suy nghĩ liên quan - điều cần lưu ý khi lưu trữ dữ liệu meta được tuần tự hóa như thế này là bạn hạn chế khả năng sử dụng dữ liệu đó trong các truy vấn, nếu đó là vấn đề khiến bạn lo lắng. chẳng hạn, không dễ để viết các truy vấn như "hiển thị cho tôi tất cả các bộ phận được sản xuất tại Canada" hoặc đặt hàng kết quả theo id động cơ, vì dữ liệu đó được giấu với một loạt dữ liệu khác trong một trường.


@ M.Taylor - bạn được chào đón, hãy kiểm tra chỉnh sửa tôi đã thêm về dữ liệu và truy vấn được xê-ri hóa, không chắc chắn đó là mối quan tâm của bạn, nhưng có thể là như vậy.
Milo

Bạn thực hiện một điểm tuyệt vời về việc mất khả năng tìm kiếm dữ liệu. Tôi sẽ phải xem xét làm thế nào để không lưu trữ nó trong một mảng nối tiếp, với điều kiện là tôi không viết kịch bản.
m-torin

@ M.Taylor Tôi không, xin lỗi. Tôi chắc chắn ai đó ở đây có thể giúp đỡ mặc dù.
Milo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.