@Denis9999

Десериализация массива php?

Сериализованный массив храниться в качестве метаданных элемента таксономии (term).
$myvals = get_term_meta( $term->term_id );
foreach($myvals['season_data'] as $key=>$val)
        {
            echo $key . ' : <br>';
            print_r(unserialize($val));
            echo $val['name'] . '<br>';
            echo '<br>';
        }

$val не десериализуется.

При этом в следующем коде, написанном ради теста массив десериализуется:
$a = array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3');
        print_r($a);
        echo "<br><br>";
        
        $b = serialize($a);
        print_r($b);
        
        $b2 = unserialize($b);
        echo "<br><br>";
        print_r($b2);


Почему в первом варианте массив не десериализуется?
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
@Denis9999 Автор вопроса
You can unserialize twice:

$unserialized = unserialize( unserialize( $usermeta['facebookmeta'] ) );

NB: There's no need to serialize when using update_user_meta, it serializes automatically for you, cf. maybe_serialize: codex.wordpress.org/Function_Reference/maybe_serialize
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
In case the passed string is not unserializeable, FALSE is returned and E_NOTICE is issued.


сломали строку значит, включите вывод ошибок и увидите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы