Как экспортировать массив PHP, где каждая пара ключей и значений находится в отдельной строке?
Я ищу эквивалентную функциональность var_export()
, которая позволяет мне экспортировать массив PHP в синтаксический код, но каждый оператор должен быть напечатан в отдельной строке (поэтому каждая строка имеет свою собственную независимую структуру).
В настоящее время этот код:
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
?>
выведет:
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
Однако я ищу для вывода в следующем формате, например:
$foo = array()
$foo['0'] = 1
$foo['1'] = 2
$foo['2'] = array();
$foo['2']['0'] = 'a';
$foo['2']['1'] = 'b';
$foo['2']['2'] = 'c';
поэтому выполнение этого результата приведет к тому же оригинальному массиву.
Цель состоит в том, чтобы управлять очень большими массивами в понятном для человека формате, поэтому вы можете легко отменить некоторые выбранные элементы только методом копирования и вставки (где каждая строка содержит полный путь к элементу). Обычно, когда вы выгружаете очень большой массив на экране, проблема в том, что вы должны прокручивать очень долгое время, чтобы найти своего родительского родителя, и практически невозможно выяснить, какой элемент принадлежит к нему и каков его полный путь, много времени.
Ответы
Ответ 1
В настоящее время я найден здесь (отправил ravenswd) эту простую функцию, которая может достичь этого:
function recursive_print ($varname, $varval) {
if (! is_array($varval)):
print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
else:
print $varname . " = array();<br>\n";
foreach ($varval as $key => $val):
recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
endforeach;
endif;
}
Вывод для recursive_print('$a', $a);
:
$a = array();
$a[0] = 1;
$a[1] = 2;
$a[2] = array();
$a[2][0] = 'a';
$a[2][1] = 'b';
$a[2][2] = 'c';
Ответ 2
Вы можете использовать простое решение с помощью json_encode
следующим образом.
<?php
$arrayA = array (1, 2, array ("a", "b", "c"));
$arrayString=json_encode($a);
$arrayB=json_decode($arrayString);
?>
Здесь все, что вам нужно сделать, - закодировать массив в json (который вернет строку) с помощью json_encode
. Затем вы можете сохранить полученную строку в любом месте.
Когда вы прочтете эту строку назад, вы должны вызвать json_decode
, чтобы получить исходный php-массив.
Надеюсь, это простое решение того, чего вы хотите достичь.
Ответ 3
Попробуйте этот подход:
<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');
function print_item($item, $key){
echo "$key contains $item\n";
}
array_walk_recursive($fruits, 'print_item');
?>
Рекурсивная функция массива, применяет любую функцию ко всем элементам в массиве.
Ура!
-Orallo