LoginSignup
8
8

More than 5 years have passed since last update.

phpで定義済み変数の一覧をtableで出力

Last updated at Posted at 2014-04-24

phpで定義済み変数の一覧をtableで出力

変数の一覧見たい時とかに。

php
function hoge($var) {
    if(is_array($var)) {
        echo "<table border='1'>";
        foreach($var as $key => $value) {
            echo "<tr>";
            echo "<td>";
            echo htmlspecialchars($key);
            echo "</td>";
            echo "<td>";
            hoge($value);
            echo "</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<div>";
        echo htmlspecialchars($var);
        echo "</div>";
    }
}

$vars = get_defined_vars();
unset($vars["GLOBALS"]);
hoge($vars);

注意

$GLOBALS は値に自身の参照を持ってるので、
除外しておかないと無限再帰に陥って残念な事になるので注意。

javascriptで空の新規ウインドウに書き出してみたり

ちょっと改変。

php
<?php
function hoge2($var) {
    if(is_array($var)) {
        echo "<table border='1'>";
        foreach($var as $key => $value) {
            echo "<tr>";
            echo "<td>";
            echo htmlspecialchars($key, ENT_QUOTES);
            echo "</td>";
            echo "<td>";
            hoge2($value);
            echo "</td>";
            echo "</tr>";
        }
        echo "</table>";
    } else {
        echo "<div>";
        echo htmlspecialchars(
                str_replace(array("\r\n", "\r", "\n"), "", var_export($var, true)),
                ENT_QUOTES);
        echo "</div>";
    }
}
?>
php
<div>
    <script type="text/javascript">
    function vars() {
        try {
            var page = window.open("", "", "width=720,height=800,resizable=yes,scrollbars=yes,status=yes,location=no");
            page.document.open();
            page.document.write("<?php $vars = get_defined_vars(); unset($vars["GLOBALS"]); hoge2($vars); ?>");
            page.document.close();
        } catch(e) {
            console.log(e);
        } finally {
            return false;
        }
    }
    </script>
    <a href="#" onclick='return vars();'>vars</a>
</div>
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8