Я ищу эквивалентную функциональность для 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';
поэтому выполнение этого результата приведет к тому же оригинальному массиву.
Цель состоит в том, чтобы управлять очень большими массивами в понятном для человека формате, поэтому вы можете легко отменить некоторые выбранные элементы только методом copy & paste (где каждая строка содержит полный путь к элементу). Обычно, когда вы набрасываете очень большой массив на экране, проблема в том, что вы должны долго прокручивать, чтобы найти родителя своего родителя, и почти невозможно узнать, какой элемент принадлежит к нему и каков его полный путь, не тратя впустую много времени.
В настоящее время я нашел здесь (отправленный 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';
Вы можете перейти к простому решению с помощью 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-массив.
Надеюсь, это простое решение того, чего вы хотите достичь.
Попробуйте этот подход:
<?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