Сделайте массив метаданных пользователя в WordPress удобочитаемым - PullRequest
0 голосов
/ 12 марта 2012

Я добавил некоторые данные с помощью Gravity Forms на сайт Wordpress, и я пытаюсь перебрать данные, которые хранятся в базе данных, в массиве в удобочитаемом формате. Данные хранятся для MOVIE, ROLE и YEAR - вот как данные хранятся в базе данных:

с: 298: "а: 3: {я: 0; а: 3: {s: 4:" Год "; s: 4:" 2010 "; s: 5:" Кино "; s: 18: «Миссия невыполнима»; s: 4: «Роль»; s: 5: «Актер»;} i: 1; a: 3: {s: 4: «Год»; s: 4: «2011»; s: 5 : "Кино"; с: 20: "Миссия невыполнима 2"; с: 4: "Роль"; с: 10: "Ведущий актер";} i: 2; a: 3: {с: 4: "Год"; с: 4: "2012"; с: 5: "Кино"; с: 20: "Миссия невыполнима 3"; с: 4: "Роль"; с: 8: "Режиссер";}} ";

Любые идеи о том, как пройти через это и выводить данные в удобочитаемом виде, будут наиболее цениться ... Я заплачу пиво любому, кто может помочь ...

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2012
$data = 's:298:"a:3:{i:0;a:3:{s:4:"Year";s:4:"2010";s:5:"Movie";s:18:"Mission Impossible";s:4:"Role";s:5:"Actor";}i:1;a:3:{s:4:"Year";s:4:"2011";s:5:"Movie";s:20:"Mission Impossible 2";s:4:"Role";s:10:"Lead Actor";}i:2;a:3:{s:4:"Year";s:4:"2012";s:5:"Movie";s:20:"Mission Impossible 3";s:4:"Role";s:8:"Director";}}";';

// first remove the string declaration at the start, if you don't do this, unserialize() will treat most of the data as a string and won't convert it to an array
$data = substr($data, strpos($data, '"')+1);

// now just unserialize into an array so it can be looped through with foreach() etc
$arr = unserialize($data);

print_r($arr);

Выходы

Array
(
    [0] => Array
        (
            [Year] => 2010
            [Movie] => Mission Impossible
            [Role] => Actor
        )

    [1] => Array
        (
            [Year] => 2011
            [Movie] => Mission Impossible 2
            [Role] => Lead Actor
        )

    [2] => Array
       (
            [Year] => 2012
            [Movie] => Mission Impossible 3
            [Role] => Director
        )

)

Чтобы перебрать массив, вы можете использовать foreach:

<?php

$html = '<table>';

// table headings
$html .= '<tr><th>Year</th><th>Movie</th><th>Role</th></tr>';

foreach($arr as $item)
{
    $html .= '<tr>';
    $html .= '<td>' . $item['Year'] . '</td>';
    $html .= '<td>' . $item['Movie'] . '</td>';
    $html .= '<td>' . $item['Role'] . '</td>';
    $html .= '</tr>';
}

 $html .= '</table>';

echo $html; // output the HTML table
?>
1 голос
/ 12 марта 2012

Вы пытались десериализовать эту строку?

...