在php

时间:2016-07-27 07:59:40

标签: php

$result[] = array("'../../folder1/insidefolder1'","'../../folder2/insidefolder2'");
define('dirarr', serialize($result));

我想定义一个像上面这样的数组。然后我print_r()就像下面的

print_r(dirarr);

但我没有得到我期望的输出。我希望得到类似["'../../folder1/insidefolder1'","'../../folder2/insidefolder2'"]

的内容

而是我得到这样的东西

  

一个:1:I {:0;一个:2:{I 0,S:29:“” ../../文件夹1 / insidefolder1 ' ”; I:1; S:29:“'。 ./../folder2/insidefolder2' “;}}   警告:为第219行中的foreach()提供的参数无效

5 个答案:

答案 0 :(得分:3)

define('dirarr', serialize($result));

它序列化数组;有关详细信息,请参阅serialize() manual page

当您想要使用该值时,您需要unserialize()这样的内容:

$unserializedArray = unserialize(dirarr);

答案 1 :(得分:2)

执行print_r(dirarr);时,您将获得序列化字符串

在将其用作数组之前,需要对其进行反序列化。

$result[] =     array("'../../folder1/insidefolder1'","'../../folder2/insidefolder2'");
define('dirarr', serialize($result));

以后

$array = unserialize(dirarr);
print_r($array); // will give you the expected result

答案 2 :(得分:0)

序列化序列化数组。也许你想要json格式?所以不是:

equals

define('dirarr', serialize($result));

或只是

define('dirarr', json_encode($result));

这完全取决于你以后想要做什么

答案 3 :(得分:0)

$result[] =array("'../../folder1/insidefolder1'","'../../folder2/insidefolder2'");
print_r($result);

请删除此代码。将字符串从php传递到javascript只需要序列化。

define('dirarr', serialize($result));

答案 4 :(得分:0)

我猜你不需要序列化但是json_encode()这个

$result[] = array("'../../folder1/insidefolder1'","'../../folder2/insidefolder2'");
define('dirarr', json_encode($result));

使用json_encode(),您可以在JavaScript中轻松使用此数组。 Serialize以不同的方式工作。通过某种通信(如套接字,会话,api)传递对象并对其进行反序列化以在不同位置获取相同的对象是很好的。