将PHP数组字符串转换为数组

Pet*_*aig 8 php arrays serialization

我有一个数组:

$myArray = array('key1'=>'value1', 'key2'=>'value2');
Run Code Online (Sandbox Code Playgroud)

我把它保存为变量:

$fileContents = var_dump($myArray);
Run Code Online (Sandbox Code Playgroud)

如何将变量转换回常规数组?

echo $fileContents[0]; //output: value1
echo $fileContents[1]; //output: value2
Run Code Online (Sandbox Code Playgroud)

Pao*_*ino 20

我想你可能想看看serializeunserialize.

$myArray = array('key1'=>'value1', 'key2'=>'value2');
$serialized = serialize($myArray);
$myNewArray = unserialize($serialized);
print_r($myNewArray); // Array ( [key1] => value1 [key2] => value2 ) 
Run Code Online (Sandbox Code Playgroud)

  • @marines:如果你想对问题采取文字方法,我想这是真的.很明显OP只是在寻找一种方法来将数组保存为字符串然后将其恢复,因此序列化是他*问题*的正确答案,即使问题没有指定它.你永远不会故意做他正在尝试使用var_dump()的东西,所以它变成了一个非问题. (4认同)
  • 您的解决方案不包括将var_dump()输出还原为数组(这是问题).这只是完成序列化和反序列化数组的另一种方法. (3认同)
  • 但这不是问题的答案. (2认同)

Bin*_*V A 19

序列化可能是正确的答案 - 但我更喜欢使用JSON - 人类编辑数据将是可能的...

$myArray = array('key1'=>'value1', 'key2'=>'value2');
$serialized = json_encode($myArray);
$myNewArray = json_decode($serialized);
print_r($myNewArray); // Array ( [key1] => value1 [key2] => value2 )
Run Code Online (Sandbox Code Playgroud)

  • +1用于使用JSON.注意:json_decode()函数需要第二个参数为"true"才能返回一个关联数组!(或者它将返回一个"stdClass"对象) (5认同)

Jak*_*raw 7

尝试使用var_export生成有效的PHP语法,将其写入文件,然后"包含"该文件:

$myArray = array('key1'=>'value1', 'key2'=>'value2');
$fileContents = '<?php $myArray = '.var_export($myArray, true).'; ?>';

// ... after writing $fileContents to 'myFile.php'

include 'myFile.php';
echo $myArray['key1']; // Output: value1
Run Code Online (Sandbox Code Playgroud)