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


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.