動的なサイトを制作する際、
キャッシュをうまく利用したいということは多いはず。

単純なテキストとかであれば大丈夫だと思いますが、
配列を配列のままキャッシュさせたい、、、

なんていう要望、ありませんか?

私も四苦八苦してしまいました。

iniファイルで管理して、parse_ini_file()で読み出せば簡単だ
と思ったのですが、それだと多次元配列の扱いが難しい。。。

で、色々探してみたら、
serialize() という関数を発見!!

これは、配列を配列として管理可能な文字列に
変換するというものです。

どんな文字列になるかは使ってみてください!

で、まあお決まりのように、これを逆変換する関数も用意されているわけで。
それがunserialize()

簡単なサンプルコード書いてみます。適当に。


<?php

// 配列(内容へのツッコミは受け付けません)
$array = (
'name' => 'semodoki',
'fruit' => array(
'grape' => 'suki',
'orange' => 'suki',
'grapefruit' => 'kirai'
)
);

// シリアライズ
$serialized = serialize($array);

// シリアライズしたテキストを覗いてみよう
echo $serialized . "\n";
echo "<hr />\n";

// 保存
$fp = fopen('fruit.txt', 'w');
flock($fp, LOCK_EX);
fputs($fp,$serialized);
fclose($fp);

// 読み込み
$fileStr = file_get_contents("fruit.txt");

// 逆変換(配列に格納されますよー)
$unserialized = unserialize($fileStr);

// 表示してみよう
print_r($unserialized);

exit;

?>

こんな感じ。

多次元配列だろうが連想配列だろうが、
キレイに処理してくれます。

DB使えない環境とかでも便利です。
オリンピックの流れに乗って、会社で中継見るために、
本日昼休みにiPhoneのワンセグ環境を速攻で準備しました。

もう腐るほど色んなトコに記事は出てると思いますが、
一応エントリ書いておきます。


① iPhone「TV&バッテリー」を買いましょう

 基本的に1万円前後。
 Amazonで買いたい人は、下記でw

 「iPhone TV&バッテリー」@Amazon


② 専用のアプリケーションをダウンロードしましょう

 「テレビ」もしくは「TVモバイル」

 「テレビ」の方は、完全無料のアプリケーションで、
iPhoneのWi-Fi機能が届く範囲にチューナーを置き、
Wi-Fi機能をOnにしておけば大丈夫。

 ワンセグの電波が届く範囲で、簡単にテレビが
見れるようになります。

 「TVモバイル」の方は、ダウンロード無料。
ライセンス料を1000円払えば、自宅にチューナーを
おきっぱなしにしてても外出先でiPhoneが見れるという
天才的なアプリケーション。

 使ったことないので、どうやってやるか分かりませんが、
いずれ使うと思います。


③ 色々なお知らせ

 ・チューナーが1個あれば、電波の範囲内で
 複数のiPhoneからワンセグが見れます!

  →それぞれのiPhoneにアプリが必要

 ・チューナーは最初にアップデートがかかります。

  →しかもチューナーの充電率が30%以上たまらないと駄目。
   なので、買って電源もしくはPCがある環境に行ってから、
   ワンセグが見れるようになるまで大体30分程度かかります。


すごい殴り書きですが、こんな感じですね。
文字列連結は普通にプログラム書いてるとかなり多く利用するもの。

例えばJavaだと

String s1 = "Hello";
String s2 = "World";

String str = s1 + " " + s2;

こんな感じ。

PHPでは型宣言が不要なので

s1 = "Hello";
s2 = "World";

str = s1 . " " . s2;

ではObjective-Cだと

NSString *s1 = @"Hello";
NSString *s2 = @"World";

NSString *str = [NSString stringWithFormat:@"%@ %@",s1,s2];

こうなります。

使用するのはこの関数。

stringWithFormat

書式指定可能なNSStringの引数を渡します。
上記の例では、「%@」が書式部分。

「,(カンマ)」以降に、指定部分の変数を割り当てていきます。

「"(ダブルクォート)」の直前の「@」は、NSString型の文字列を扱うときに
必ずつけなければならないようですね。

また、NSString型の変数を宣言する際に、
「*(アスタリスク)」を変数の直前につけるのも決まりらしい。

なので、実際の変数名は「*」を取った部分になります。

メソッドの使い方をざっくり説明すると、
メソッド使用の際に[ ]で囲むのは決まり。

[返り値の型 メソッド名:引数]

という形で使用します。

引数が複数のパターンなどは若干めんどくさいので、
別途記事にします。

また、フォーマットとして使用できる書式は、

%@ 文字列
%c 一つの文字
%d Integer(符号付10進数表示)
%u Integer(符号なし10進数表示)
%o Integer(符号付8進数表示)
%x Integer(符号付16進数表示)
%X Integer(符号なし16進数表示)
%e doubleを指数付きで表示
%f  doubleを指数なし表示
%.2f doubleを小数点第2位まで表示
%.1f doubleを小数点第1位まで表示
%g doubleをeかfのいずれか短い方で表示
%s 文字列を最初のNULLまで表示
となっています。

まだObjective-C使い始めて間もないですが、
正直使えば使うほどメンドクサイですw