2013年7月6日土曜日

PHP入門者メモ 配列をデータベースに格納する方法 配列の文字列化

PHP入門者メモ 配列をデータベースに格納する方法 配列の文字列化

要素数が不特定な配列をデータベースなどに格納する場合、
頭を悩ますことなく格納する手段として配列の文字列化が使える。

文字列化することにより、1項目に配列がまるごと格納できるのだ。

使用するのは、serialize 逆に文字列化した配列を元の配列に戻すのは、 unserialize

例えば、

Array
(
    [0] => Dummy
    [1] => 116
    [2] => 16
    [3] => 55
    [4] => 1
    [5] => 12
    [6] => 2
    [7] => 80
    [8] => 8
    [9] => 34
    [10] => 94
    [11] => 6
    [12] => 1
    [13] => 72
    [14] => 1
    [15] => 44
    [16] => 62
    [17] => 59
    [18] => 5
    [19] => 77
    [20] => 46
    [21] => 21
    [22] => 0
    [23] => 57
    [24] => 84
    [25] => 152
    [26] => 3
    [27] => 11
    [28] => 19
    [29] => 19
    [30] => 0
    [31] => 0
)
 
このような配列をserialize で変換すると、

a:32:{i:0;s:5:"Dummy";i:1;s:3:"116";i:2;s:2:"16";i:3;s:2:"55";i:4;s:1:"1";i:5;s:2:"12";i:6;s:1:"2";i:7;s:2:"80";i:8;s:1:"8";i:9;s:2:"34";i:10;s:2:"94";i:11;s:1:"6";i:12;s:1:"1";i:13;s:2:"72";i:14;s:1:"1";i:15;s:2:"44";i:16;s:2:"62";i:17;s:2:"59";i:18;s:1:"5";i:19;s:2:"77";i:20;s:2:"46";i:21;s:2:"21";i:22;i:0;i:23;s:2:"57";i:24;s:2:"84";i:25;s:3:"152";i:26;s:1:"3";i:27;s:2:"11";i:28;s:2:"19";i:29;s:2:"19";i:30;i:0;i:31;i:0;}

となる。
書式は、

$str = serialize($array);

PHP入門者メモ 配列のデバッグ表示を見やすくする

PHP入門 配列のデバッグ表示を見やすくする

配列の中身をデバッグ表示する簡単な方法は、print_r を使用する
ところが出力はだらだらと表示されるので見辛い。

例えば、$day が配列だとすると

print_r($day);

出力は、
Array ( [0] => Dummy [1] => 116 [2] => 16 [3] => 55 [4] => 1 [5] => 12 [6] => 2 [7] => 80 [8] => 8 [9] => 34 [10] => 94 [11] => 6 [12] => 1 [13] => 72 [14] => 1 [15] => 44 [16] => 62 [17] => 59 [18] => 5 [19] => 77 [20] => 46 [21] => 21 [22] => 0 [23] => 57 [24] => 84 [25] => 152 [26] => 3 [27] => 11 [28] => 19 [29] => 19 [30] => 0 [31] => 0 )
このように非常に見辛いので、<pre>タグで囲んでみる

echo "<pre>";print_r($day);
echo "</pre>";
すると出力は、

Array
(
    [0] => Dummy
    [1] => 116
    [2] => 16
    [3] => 55
    [4] => 1
    [5] => 12
    [6] => 2
    [7] => 80
    [8] => 8
    [9] => 34
    [10] => 94
    [11] => 6
    [12] => 1
    [13] => 72
    [14] => 1
    [15] => 44
    [16] => 62
    [17] => 59
    [18] => 5
    [19] => 77
    [20] => 46
    [21] => 21
    [22] => 0
    [23] => 57
    [24] => 84
    [25] => 152
    [26] => 3
    [27] => 11
    [28] => 19
    [29] => 19
    [30] => 0
    [31] => 0
)

となり、非常に見やすくなる。