MW211 EXIT

devlog
PHP配列/var_export()
2014年04月10日
PHPの配列は以下のような感じで定義する訳だが、
┌──────────────────────────────────────┐
│$配列 = array (                                                             │
│    キー => 値,                                                             │
│    内部配列 => array (                                                     │
│        0 => array (                                                        │
│            キー => 値,                                                     │
│        ),                                                                  │
│    ),                                                                      │
│);                                                                          │
└──────────────────────────────────────┘
定義後の「$配列」から、右辺を再現する方法がある。
「var_export($配列);」だ。

第二引数に、「TRUE」を付ければ、標準出力ではなく、左辺に代入もできる。
┌──────────────────────────────────────┐
│$文字列 = var_export($配列, TRUE);                                          │
└──────────────────────────────────────┘

で、これを配列に復元させるには…、コピペしてソースに貼り付ければいい。
ってな、冗談はさておき、といってもこれが結構実用的だったりする。

プログラム的に復元するには、「eval()」を使うことになる。
(ソースにコピペしたような挙動をしてくれる便利な関数だ)

一連の流れをまとめると以下のような形となる。
┌──────────────────────────────────────┐
│$文字列 = var_export($配列, TRUE);                                          │
│$配列 = var_import($文字列);                                                │
├──────────────────────────────────────┤
│function var_import($string) {                                              │
│    eval('$array=' . $string . ';');                                        │
│    return $array;                                                          │
│}                                                                           │
└──────────────────────────────────────┘
但し、「eval()」は万能過ぎるので、致命的なこと(例えばファイル削除)を
意図せずして行われる危険性を伴う(SQLインジェクションみたいな感じで)。

なので、あまり、使わない方がいいようだ。
ってことで、「var_export()」は手動コピペと共にってのが上手な付き合い方かも。
分類:PHP配列