在PHP中转换序列化数组输出

时间:2017-03-03 17:55:16

标签: php arrays wordpress

在Wordpress中,我有一些带有此形式字符串的 meta_key 字段,来自序列化数组,具有可变长度:

public: using B::var;

我需要将它们复制到其他帖子 meta_key 字段,但采用以下格式:

a:2:{i:0;i:281;i:1;i:282;}

我该怎么做?

我的代码:

[281,282]

P.S。我向那些对我的问题感到愤怒的人道歉!我不是PHP程序员,我根本不是程序员,但我需要解决这个问题。

我检查了@Machavity的推荐答案,它们非常有教育意义,但这并没有帮助我解决问题。

[解决]

我感谢所有试图帮助我的人:@AbraCadaver,@ Anant,@ ManinderpreetSingh,@ ShaktiPhartiyal,当然还有@Machavity!:)

2 个答案:

答案 0 :(得分:2)

您必须使用unserialize()函数,然后连接输出以创建类似格式的数组: 您可以使用:

<?php
$sData = 'a:2:{i:0;i:281;i:1;i:282;}';
$uData = unserialize($sData);
$arrFormat = "[".implode(",",$uData)."]";
echo $arrFormat;

这会给你输出:

[281,282]

答案 1 :(得分:0)

以下是我在Wordpress plugin中找到的有效解决方案:

...

$attachments = get_posts( $args );
if ($attachments) {
   $attachmentIds = array();
   foreach ( $attachments as $attachment ) {
      $attachmentIds[] = $attachment->ID;
   }

$dirty_ordered_keys = $attachmentIds;
$length = sizeof($dirty_ordered_keys);
$clean_ordered_keys = array();

for ( $i = 0; $i < $length; $i++ ) {
    $clean_ordered_keys[$i] = intval($dirty_ordered_keys[$i]);
}

$clean_ordered_keys_json = json_encode($clean_ordered_keys);
$data['meta_input']['advert_post_attachments'] = $clean_ordered_keys_json;