Як витягнути дані з постметаріалізованого масиву?


23

Я знайшов сценарій декодера XML до WP, який зберігає дані як масив у спеціальному метаполі. Який найкращий спосіб отримати інформацію?

Наприклад, як я міг відображати поле "Виготовлено" як "КАНАДА"?

[_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";}} )

Приклад коду, описаного вище, був створений через print_r(get_post_custom($post->ID));.

Я дуже ціную будь-яке розуміння, незалежно від того, наскільки мало. :)


1
Якщо ви збираєтесь проголосувати, питання, принаймні, достатньо дорослого, щоб сказати, чому. Я дуже намагаюся вивчити php. Це може бути основною справою для більшості програмістів, але я виходжу з дизайну.
m-torin

Відповіді:


35

Використовуйте unserialize (), щоб перетворити його в масив.

$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];

Редагувати - Пов’язана думка - щось, про що слід пам’ятати, зберігаючи метадані, серіалізовані таким чином, це те, що ви обмежуєте свою здатність використовувати ці дані у запитах, якщо це стосується вас. наприклад, не так просто писати запити на кшталт "показати мені всі деталі, виготовлені в Канаді", або замовити результати за ідентифікатором двигуна, оскільки ці дані засипані купою інших даних в одному полі.


@ M.Taylor - ласкаво просимо, перевірте додане мною редагування щодо серіалізованих даних та запитів, не впевнений, що це стосується вас, але це може бути.
Міло

Ви чудово розумієте, що втрачаєте можливість пошуку даних. Мені доведеться вивчити, як не зберігати його в серіалізованому масиві, враховуючи, що я не писав сценарій.
m-torin

@ M.Taylor Не хочу, вибачте. Я впевнений, що хтось тут може допомогти.
Міло
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.