欢迎光临!请记住我的域名:http://wish123.cnblogs.com
代码改变世界

导出php5.4支持的数组格式,即以[]为标识符而不是以array()标识

2017-05-09 14:21  wish123  阅读(1427)  评论(0编辑  收藏  举报
//导出php数组,以[]为标识符而不是以array()
if (!function_exists('varExport')) {
    //导出php数组,以[]为标识符而不是以array()
    function varExport($var)
    {
        echo '<meta charset="utf-8" />';
        $traces = debug_backtrace();
        $varNames = [];
        foreach ($traces as $trace) {
            if (isset($trace['function']) && in_array($trace['function'], array('varExport'))) {
                echo $trace['file'] . ':' . $trace['line'] . "\n";
                if (file_exists($trace['file'])) {
                    $vars = file($trace['file'])[$trace['line']-1];
                    preg_match('/varExport\(([$\w, ]+)\)/i', $vars, $matches);
                    $varNames = !empty($matches[1]) ? explode(',', $matches[1]) : [];
                }
                break;
            }
        }
        $exporter = function ($var, $indent = "") use (&$exporter) {
            switch (gettype($var)) {
                case "string":
                    return '"' . addcslashes($var, "\\\$\"\r\n\t\v\f") . '"';
                case "array":
                    $self = $exporter;
                    $indexed = array_keys($var) === range(0, count($var) - 1);
                    $r = [];
                    foreach ($var as $key => $value) {
                        $r[] = "$indent    "
                            . ($indexed ? "" : $self($key) . " => ")
                            . $self($value, "$indent    ");
                    }
                    return "[\n" . implode(",\n", $r) . "\n" . $indent . "]";
                case "boolean":
                    return $var ? "TRUE" : "FALSE";
                default:
                    return var_export($var, true);
            }
        };
        echo '<pre>';
        array_map(function ($var, $varName) use ($exporter) {
            $varName = !empty($varName) ? trim($varName) . ' = ' : '';
            $endChar = !empty($varName) ? ';' : '';
            echo $varName . $exporter($var) . $endChar . "\n";
        }, func_get_args(), $varNames);
        echo '</pre>';
    }
}

代码输出:

/data1/www/xxxxx/XxxxController.php:265
$channelList = [
    [
        "iChannelID" => "",
        "sChannelName" => "全部"
    ],
    [
        "iChannelID" => 1,
        "sChannelName" => "腾讯"
    ],
    [
        "iChannelID" => 2,
        "sChannelName" => "淘宝"
    ],
    [
        "iChannelID" => 3,
        "sChannelName" => "百度"
    ]
];