如何:对序列化多维数组进行反序列化并在PHP中反序列化

时间:2019-01-13 11:04:22

标签: javascript php arrays reactjs serialization

-编辑2-

我将其放在最前面,因为我正在缩小问题的范围。

我将这个字符串嵌套在一个更大的数组中,并结合了WP短代码的所有属性。问题出在方括号之内。

{“key”:”post_type”,”value”:[“news”,”agenda"]}

我最好的问题是我需要逃脱方括号或搜索两侧的替换,并使用(squareBracketOpen)之类的占位符。

或者还有另一种方法来序列化/反序列化数组?

问题出在方括号内。

-/编辑2-

我正在使用React和PHP,并且想在Wordpress插件之上添加一些内容。这使用了React,我一点都不熟悉:)

现在,我对反应的知识为零,但是我正在逐步使事情变得可行。虽然我不知道该怎么解决,但有一件事。我将从问题开始:

如何在React中序列化多维数组并在PHP中反序列化? 如果在任何情况下我都想翻译我的问题,让我陈述一下我的目标: 我在React中有一个多维数组,我想将其传递给PHP并将其作为多维数组重用。

这将是数组:

Array {
[key] => “post_type”,
[value] => Array {
    [0] => “news”,
    [1] => “agenda”
    }
}

作为React我的测试

console.log(JSON.stringify(post_type));
// expected return {“key”:”post_type”,”value”:[“news”,”agenda"]}

-edit--我注意到它添加了[ ]括号作为多维。那不对吧? -结束编辑-

据我所知,对吧?

现在在PHP中,我尝试使用以下方法将其反序列化:

var_dump( unserialize ($postType ) );
// result: bool(false)

很明显,我做错了什么。 :) 谁会知道如何在React中正确序列化多维数组并将其在PHP中反序列化为数组?

2 个答案:

答案 0 :(得分:2)

您需要执行json_decode($post_type, true)才能将其转换为多维数组。

请注意,第二个参数true将其转换为关联数组。

因此,从本质上讲,您将先进行JSON.stringify然后json_decode()才能在php中工作

答案 1 :(得分:0)

好的,最后。我最终要做的是在js / react方面。

  1. 将数组序列化为字符串。与JSON.stringify()
  2. uri对字符串进行了编码。与encodeURIComponent()
  3. 在php端将其反转。

JS /反应

let post_type_encoded = encodeURIComponent( JSON.stringify( post_type ) )    

PHP

$postType = json_decode ( urldecode( $postTypeEncoded ) );