PHPの変数をJavaScriptの変数(のコード)に変換する関数

こんにちは。

JavaScriptが全然動かないとおもっていたら、
type="test/javascript"と書いているような人間です。


DBから取得したデータをJavaScriptプラグインに渡すときは、PHPの変数をJSコードに変換してで出力しなければなりませんよね?
ネットで探しても適度なものがなかったので簡単なの作りました。配列と文字列、数値が変換できます。オブジェクトや連想配列を変換したい場合は土台に使ってください。
誰か他に便利な方法知ってたら教えてください。

関数

<?php
function getArrayToJSArray($element) {
	$js = "";
	if (is_array($element)) {
		$js .= "[";
		$count = 0;
		foreach($element as $key => $value) {
			$js .= getArrayToJSArray($value);
			$count++;
			if ($count != count($element)) {
				$js .= ",";
			}
		}
		$js .= "]";
	} else {
		if (is_numeric($element)) {
			$js .= $element;
		} else if (is_string($element)) {
			$js .= "'" . $element . "'";
		}
	}
	return $js;
}
?>

使い方

  • 実行
<?php
$test = array();
$test[0] = array('2010-12-25 10:00', '100');
$test[1] = array('2010-12-25 10:05', '200');
$test[2] = array('2010-12-25 10:10', '300');

echo 'var data = ' . getArrayToJSArray($test) . ';';
?>
  • 結果
var data = [['2010-12-25 10:00',100],['2010-12-25 10:05',200],['2010-12-25 10:10',300]];

ちなみに文字列のエスケープ処理はしてないです。


ColdFusionにはToScript()という関数がありますね!でも高い。。。


誰かのお役に立てば幸いです。