2009-03-26 18 views
8

に私は配列を持っている:変換PHPの配列文字列配列

$myArray = array('key1'=>'value1', 'key2'=>'value2'); 

は、私は、変数として保存します。

$fileContents = var_dump($myArray); 

通常の配列として使用するために戻って変数に変換するにはどうすればよいですか?

echo $fileContents[0]; //output: value1 
echo $fileContents[1]; //output: value2 
+0

あなたが代わりに '' var_dump'のprint_r'を使用する場合は、[しますprint_r逆の機能]を使用することができます(http://www.php.net/ manual/en/function.print-r.php#93529)。 – machineaddict

答えて

19

を。

$myArray = array('key1'=>'value1', 'key2'=>'value2'); 
$serialized = serialize($myArray); 
$myNewArray = unserialize($serialized); 
print_r($myNewArray); // Array ([key1] => value1 [key2] => value2) 
+2

しかし、それは質問の答えではありません。 – marines

+0

@マリンズ:そうではありませんか? –

+2

あなたの解決策は、var_dump()出力を配列に戻すことをカバーしていません(これが問題でした)。これは、配列のシリアライズとシリアライズ解除を行うもう1つの方法です。 – marines

7

、有効なPHPの構文を生成するvar_exportを使用してみてくださいファイルにそれを書き込み、ファイル「を含む」:私はあなたがserializeunserializeに見たいと思うかもしれないと思う

$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 
+0

これは私をとても幸せにしました!ありがとう! –

+0

ここではすべての例のソースとして$ myArrayを使用することを忘れてしまいます。 OPは、彼が実際の配列ではなく、それをダンプすることから始めたいと明確に言った。彼は配列ではなくダンプを持つ文字列を持っています。彼は文字列を生成したくない。 – sergio

18

シリアル化は正解かもしれない - しかし、私はJSONを使用して好む - データの人間の編集がevalの程度道...

$myArray = array('key1'=>'value1', 'key2'=>'value2'); 
$serialized = json_encode($myArray); 
$myNewArray = json_decode($serialized); 
print_r($myNewArray); // Array ([key1] => value1 [key2] => value2) 
+1

+1、私はなぜそれについて最初に考えなかったのか分かりません。これは私が個人的に使うものです。 –

+5

+1 JSONの使用。 注:json_decode()関数は、連想配列を返すために2番目のパラメータを "true"にする必要があります。 (または "stdClass"オブジェクトを返します) –

2

どのように可能でしょうか?また、var_dumpの代わりにreturn変数をtrueにして、var_exportを使用する必要があります。

$myArray = array('key1'=>'value1', 'key2'=>'value2'); 
$fileContents = var_export($myArray, true); 
eval("\$fileContentsArr = $fileContents;"); 
echo $fileContentsArr['key1']; //output: value1 
echo $fileContentsArr['key2']; //output: value2 
+0

OPが彼のvar_dump()を使いたいと言ったときに$ myArrayを使う別の例です。配列ではありません。私たちが懸念しているところでは、アレイはすでに消えている可能性があり、ダンプが何であるかを知るためには、私たちに言及しているだけです。 – sergio

1
$array = ['10', "[1,2,3]", "[1,['4','5','6'],3]"]; 

function flat($array, &$return) { 
    if (is_array($array)) { 
     array_walk_recursive($array, function($a) use (&$return) { flat($a, $return); }); 
    } else if (is_string($array) && stripos($array, '[') !== false) { 
     $array = explode(',', trim($array, "[]")); 
     flat($array, $return); 
    } else { 
     $return[] = $array; 
    } 
} 

$return = array(); 

flat($array, $return); 

print_r($return); 

OUTPUT

 
Array ([0] => 10 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => '4' [6] => '5' [7] => '6'] [8] => 3) 
関連する問題