Преобразование строки массива PHP в массив

У меня есть массив:

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

Я сохраняю его как переменную:

 $fileContents = var_dump($myArray); 

Как преобразовать переменную обратно в качестве регулярного массива?

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

Я думаю, вы, возможно, захотите изучить serialize и unserialize .

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

сериализация может быть правильным ответом – но я предпочитаю использовать JSON – редактирование данных человеком будет таким образом …

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

Попробуйте использовать 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 

Как насчет eval? Вы также должны использовать var_export с возвращаемой переменной как true вместо var_dump.

 $myArray = array('key1'=>'value1', 'key2'=>'value2'); $fileContents = var_export($myArray, true); eval("\$fileContentsArr = $fileContents;"); echo $fileContentsArr['key1']; //output: value1 echo $fileContentsArr['key2']; //output: value2 
 $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); 

ВЫВОД

 Массив ([0] => 10 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => '4' [6] => '5' [7 ] => '6'] [8] => 3)