Вывести вложенный массив PHP как $ var ['key'] ['key'] ['key'] = значение; - PullRequest
0 голосов
/ 13 ноября 2011

Нужно записать (используя fwrite ()) некоторые настройки в файл php в формате:

$var['key']['key']['key'] = false; // bool
$var['key']['key'] = 'string'; // string
$var['key'] = 1; // numeric

Для этого есть вложенный массив php

Код переопределит некоторые значения, определенные выше в файле, Var_export () бесполезен в моем случае.

Любое хорошее решение?

1 Ответ

1 голос
/ 13 ноября 2011

I отвечал на этот вопрос в Perl раньше - я думаю, я мог бы просто перенести основы ответа на PHP:

function dump_array_recursive ( $prefix, $var ) {
    if ( is_array( $var ) && !empty( $var ) ) {
        foreach ($var as $key => $val) {
            $prefix_key = $prefix . "[" . var_export( $key, true ) . "]";
            dump_array_recursive( $prefix_key, $val );
        }
    } else {
        echo "$prefix = " . var_export( $var, true ) . ";\n";
    }
}

// example call:
dump_array_recursive( '$foo', $foo );

Это немного проще, чем версия Perl, поскольку PHP имеет только один тип массива и не имеет скалярных ссылок, о которых нужно беспокоиться.Я также решил не пытаться собирать выходные данные, а просто использовал echo;вы можете заменить его на fwrite(), если хотите, или просто использовать буферизацию вывода, чтобы перехватить результат в строке.

Ps.Обратите внимание, что, хотя выходные данные этой функции обычно содержат одну строку для каждого значения, это не гарантируется: выходные данные var_export() могут содержать символы новой строки, которые будут переданы в выходные данные.Два случая, которые я обнаружил, чтобы вызвать такое поведение, включают ключи массива с символами новой строки в них и пустые массивы, которые по некоторым причинам экспортируются как "array (\n)" вместо просто "array()".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...