Конвертировать строку массива PHP в массив - PullRequest
8 голосов
/ 26 марта 2009

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

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

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

$fileContents = var_dump($myArray);

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

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

Ответы [ 5 ]

20 голосов
/ 26 марта 2009

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

$myArray = array('key1'=>'value1', 'key2'=>'value2');
$serialized = serialize($myArray);
$myNewArray = unserialize($serialized);
print_r($myNewArray); // Array ( [key1] => value1 [key2] => value2 ) 
19 голосов
/ 26 марта 2009

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

$myArray = array('key1'=>'value1', 'key2'=>'value2');
$serialized = json_encode($myArray);
$myNewArray = json_decode($serialized);
print_r($myNewArray); // Array ( [key1] => value1 [key2] => value2 )
7 голосов
/ 26 марта 2009

Попробуйте использовать 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
2 голосов
/ 14 июля 2010

Как насчет 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
1 голос
/ 01 сентября 2016
$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);

ВЫХОД

Array ( [0] => 10 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => '4' [6] => '5' [7] => '6'] [8] => 3 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...