Intereting Posts
Повторить календарь событий по будням, например, Google Calendar в php Представленные пользователем сообщения с использованием Laravel Извлечь переменные Javascript страницы через PHP Действие формы не передает жестко заданную переменную Динамические константы в PHP? Преимущество перехода по ссылке против использования глобального? Импортировать данные из txt-файла в базу данных MySQL с помощью PHP для посещения Как отправить почту с помощью gmail в Laravel 5.1? Как Google обрабатывает два одинаковых параметра URL с разными значениями? Mysqli Подготовить заявления + Binding Order BY Преобразование var_dump массива обратно в переменную массива Список записей, сгруппированных по названию категории Чтение / использование файлов на сервере / домашнем / папке Объединение сортируемой таблицы с выводом суммы флажка AES256 Штрих-шифрование на PHP и расшифровка на iPhone

Как экспортировать массив 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'; 

поэтому выполнение этого результата приведет к тому же оригинальному массиву.

Цель состоит в том, чтобы управлять очень большими массивами в понятном для человека формате, поэтому вы можете легко отменить некоторые выбранные элементы только методом 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